Hat noch jemand eine Idee?
Beiträge von Pace17881
-
-
Funktioniert leider nicht
Es wird immer "not Readonly" ausgespuckt. Egal ob es nun ReadOnly ist oder nicht.Folgendes steht in Variable $iStyle: Debug(24) : $iStyle = 1342178176
-
Hallo,
Ich habe eine Autoit-fremde GUI in der befinden sich Buttons/Edits
Für Buttons ermittle ich den Status(Enabled/Disabled) über Controlcommand.
Das klappt auch problemlos.Aber nicht bei Edit Controls.
Leider ist mein letzter Thread zu dem Thema nicht mehr vorhanden. Darin wurde erwähnt ob ich nicht eher den ReadOnly Status ermitteln möchte.Nun die Frage, Wie ermittle ich bei einem Edit Control ob es ausgegraut ist oder nicht?
Vielen Dank schon mal für eure Hilfe
Grüße
Sebastian -
Werde ich mal probieren und melden wenn es nicht klappt
Gesendet von meinem C6903 mit Tapatalk
-
Hallo zusammen,
Ich habe eine GUI in der ich ein Fenster aufrufe. Jedoch hat dies eine unterschiedliche Ladezeit. Ich habe schon versucht verschiedene Elemente auf Vorhandensein geprüft. Jedoch sind die oft eher das als der Rest der GUI. Den Maus Zeiger hatte ich ebenso probiert. Jedoch wechselt der mehrfach zwischen SandUhr und normal hin und her.
Hat jemand da eine Idee ohne Sleep einzusetzen?
Gesendet von meinem C6903 mit Tapatalk
-
Hi,
Danke für die Lösung
Regex gehört nicht wirklich zu meinen Lieblingsfunktionen. Aber ich hab wohl keine Wahl
Danke auch für die Erklärung und den verlinkten Beitrag...
-
Hallo zusammen,
ich frag in einen Programm ab ob sich ein bestimmtes Fenster öffnet. Über Title ist das gar kein Problem. Jedoch gibt es mehrere die so heißen, aber unterschiedliche Informationen enthalten. Über Text kann ich auch nicht suchen. Daher nutze ich die Möglichkeit über den CLASS NAME.
Jedoch ändert sich der CLASS NAME bei jedem Programmstart. Ich weiß jedoch nicht nach welchem System.
Die Klasse lautet in der Regel "[CLASS:WindowsForms10.Window.8.app]"
Nach "app" kommt dann noch eine Zahlenkolonne ohne erkennbares System.Wie könnte ich denn nur nach "WindowsForms10.Window.8.app" suchen?
Vielen Dank schon mal
Grüße
Sebastian -
Habs übernommen. Danke
-
Hallo zusammen,
in meinem Skript ist eine Funktion, die ein Programm überwacht, ob es Messageboxen öffnet.
Je nach Titel der Messagbox wird dann eine Aktion ausgeführt.
Ich benutze bisher eine While Schleife und frage mich, ob es noch besser geht. Denn im Schleifenkopf stehen insgesamt 7 Sachen die geprüft müssen. Denn ich habe 7 Messagebox-Titel in ein Array die beim durchlaufen natürlich allesamt geprüft werden müssen.Hier mal die Funktion:
[autoit][/autoit][autoit][/autoit][autoit]Func checkOpenMessages()
[/autoit]
Local $msgBoxArr[7] = ["Titel1", "Titel2", "Titel3", "Titel4", "Titel5", "Titel6, "Titel7"]
Local $msgBoxText[4] = ["Text1", "Text2", "Text3"]
Local $returnValue = 1
Sleep(200)
While WinExists($msgBoxArr[0]) = 1 Or WinExists($msgBoxArr[1]) = 1 Or WinExists($msgBoxArr[2]) = 1 Or WinExists($msgBoxArr[3]) = 1 Or WinExists($msgBoxArr[4]) = 1 Or WinExists($msgBoxArr[5]) = 1 Or WinExists($msgBoxArr[6]) = 1
For $i = 0 To UBound($msgBoxArr) - 1
WinActivate($msgBoxArr[$i])
Select
Case StringLeft(ControlGetText($msgBoxArr[$i], "", "[CLASS:Static; INSTANCE:3]"), StringLen($msgBoxText[0])) = $msgBoxText[0]
ControlClick($msgBoxArr[$i], "", "[CLASS:Button; INSTANCE:2]");Klick Nein an
$returnValue = -1
Case StringLeft(ControlGetText($msgBoxArr[$i], "", "[CLASS:Static; INSTANCE:3]"), StringLen($msgBoxText[1])) = $msgBoxText[1]
ControlClick($msgBoxArr[$i], "", "[CLASS:Button; INSTANCE:1]");Klick OK
$returnValue = 1
Case StringLeft(ControlGetText($msgBoxArr[$i], "", "[CLASS:Static; INSTANCE:3]"), StringLen($msgBoxText[2])) = $msgBoxText[2]
ControlClick($msgBoxArr[$i], "", "[CLASS:Button; INSTANCE:1]");Klick OK
$returnValue = -1
Case StringLeft(ControlGetText($msgBoxArr[$i], "", "[CLASS:Static; INSTANCE:3]"), StringLen($msgBoxText[3])) = $msgBoxText[3]
ControlClick($msgBoxArr[$i], "", "[CLASS:Button; INSTANCE:1]");Klick OK
$returnValue = -1
Case Else
ControlClick($msgBoxArr[$i], "", "[CLASS:Button; INSTANCE:1]")
$returnValue = 1
EndSelect
WinWaitClose($msgBoxArr[$i], "", 3000)
Next
WEnd
Return $returnValue
EndFunc ;==>checkOpenMessagesWie könnte ich die While Schleife vereinfachen? Funktionieren tut es auch so. Aber ich glaube es geht besser...
Vielen Dank schon mal
Grüße
Sebastian -
Hat jemand einen kleinen Hinweis wegen den Tastenkombinationen "Enter" und "STRG+C" ?
-
Hallo Schnitzel
vielen Dank erst mal für die Antwort.
Den Plink Wrapper habe ich schon gesehen und nutze den auch jetzt. Mein Skript ist dahingehend angepasst.
Nur mit dem senden von Befehlen klappts noch nicht. Wie übermittle ich denn "Enter" oder "Strg+C"
Hier noch mein angepasstes Skript
Spoiler anzeigen
[autoit]#include <plink_wrapper.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <Constants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>#Region ### START Koda GUI section ### Form=e:\autoit\guis\frm_plink.kxf
[/autoit] [autoit][/autoit] [autoit]
$frm_plink = GUICreate("Plinkout", 615, 439, 192, 124)
$ed_stdOut = GUICtrlCreateEdit("", 16, 24, 585, 217)
GUICtrlSetData(-1, "ed_stdOut")
$ed_stderr = GUICtrlCreateEdit("", 16, 264, 585, 129)
GUICtrlSetData(-1, "ed_stderr")
$btn_connect = GUICtrlCreateButton("SSH Connect", 16, 408, 75, 25)
$in_Input = GUICtrlCreateInput("", 256, 408, 121, 21)
$btn_send = GUICtrlCreateButton("Send", 392, 408, 75, 25)
$btn_close = GUICtrlCreateButton("SSH Close", 96, 408, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btn_connect
conSSH()
GUICtrlSetData($ed_stdOut,sendSSH(20000))
Case $btn_send
_Say(GUICtrlRead($in_Input))
GUICtrlSetData($ed_stdOut,sendSSH(20000))
Case $btn_close
_Plink_close()
MsgBox(0,"SSH Verbindung","geschlossen")
EndSwitch
WEndFunc sendSSH($delay)
[/autoit] [autoit][/autoit] [autoit]
$out = _Collect_stdout($delay)
Return $out
EndFuncFunc conSSH()
[/autoit]
$plinkLoc = "C:\Users\user\Desktop\PLINK.EXE"
$plinkServ = "server -pw pw -l pw "
$plinkHandle = _Start_plink($plinkLoc,$plinkServ)
Return $plinkHandle
EndFunc -
Hallo zusammen,
ich bin Sebastian(32) und komme aus der Nähe von Erlangen und benötige mal eure Hilfe
Ich möchte per SSH eine Verbindung zu einem Server mit Plink öffnen.
Dann soll stdout, stderr in eine GUI ausgegeben werden. Über diese GUI möchte ich dann auch per stdin Daten eingeben.Bisher kann ich den Connect durchführen und dann wird der Output im ersten Editfeld ausgegeben. Jedoch aktualisiert sich das Control permanent. Also Änderungen kann man da kaum herauslesen. Also wie kann man sich nur die Änderungen ausgeben lassen?
Was muss ich machen, damit ich Daten abschicken kann?
Hier mein Skript:
Spoiler anzeigen
[autoit]#include <Constants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=e:\autoit\guis\frm_plink.kxf
$frm_plink = GUICreate("Plinkout", 615, 439, 192, 124)
$ed_stdOut = GUICtrlCreateEdit("", 16, 24, 585, 217)
GUICtrlSetData(-1, "ed_stdOut")
$ed_stderr = GUICtrlCreateEdit("", 16, 264, 585, 129)
GUICtrlSetData(-1, "ed_stderr")
$btn_connect = GUICtrlCreateButton("SSH Connect", 256, 408, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btn_connect
conSSH()
EndSwitch
WEnd
Func conSSH()
$hostname = "server"
$stream = Run(@comspec & " /k C:\Users\user\Desktop\PLINK.EXE " & $hostname & " -pw pw -l login -ssh ", "C:\Users\user\Desktop", @SW_SHOW ,$STDIN_CHILD + $STDOUT_CHILD + $STDERR_CHILD);~ $out = "Output:" & @CRLF
[/autoit] [autoit][/autoit] [autoit]
Local $out
While 1
$out &= StdoutRead($stream)
GUICtrlSetData($ed_stdOut,$out)
If @error Then ExitLoop
Wend;~ $out &= @CRLF & @CRLF & "Error:" & @CRLF
[/autoit]
While 1
$out &= StderrRead($stream)
GUICtrlSetData($ed_stderr,$out)
If @error Then ExitLoop
Wend
EndFuncVielen Dank schon mal
Grüße
Sebastian