Hallo AutoIt Freunde ;),
ich möchte, dass mein Programm wartet, bis es weitere Informationen erhält. Diese weiteren Informationen sollen von einem anderen Programm übermittelt werden. Mein Programm läuft bereits und befindet sich die ganze Zeit in einer While 1-Schleife.
Wie soll das Programm jetzt auf weitere Informationen warten? Soll ich mit dem anderen Programm in eine Datei die Nachricht schreiben und meins liest die dann durchgehend durch? Oder gibt es eine Schnellere Methode?
Warten auf Informationen
-
- [ offen ]
-
Luke4321 -
25. Februar 2010 um 19:51 -
Geschlossen -
Erledigt
-
-
So kann es gehen
Programm 1
[autoit]FileOpen(...)
[/autoit]
FileWrite(Information) ;auch _FileWritetoLineProgramm 2
[autoit]While 1
[/autoit]
$read = FileRead("File") ; auch FileReadLine
If $read = "Dies ist die richtige Information." Then ExitLoop ;auch If Not $read = "" Then Exitloop
Wend
;Rstlicher Code der ausgeführt werden soll nachdem die Info erhalten ist.Ist vielleicht nicht die beste Lösung aber eine Mögliche
mfg Ubuntu
-
Danke, aber das weiß ich schon
Oder gibt es eine Schnellere Methode?
war eher mein Problem
-
Hi,
vielleicht irgendwas mit TCP. Sowas wie TcpConnect und TcpAccept. Guck mal in der Hilfedatei nach TCP. Die Beispiele sehen eig. ganz nützlich aus. Aber fraglich ob das schneller ist. Keine Ahnung.mfG
-
So weit ich weiss können AutoIt Scripte nicht direkt untereinander kommunizieren.
folglich: schnellte Lösung einen Text irgendwo rein zu schreiben
AutoIt kann FileDateien sehr schnell schreiben und lesen
folglich: schnelle warscheinlich auch schnellste Lösungmfg Ubuntu
-
Na gut, nehm ich FileRead+Co.
-
Achso : ini's sind noch ein bisschen scnheller
Aber das nimmt sich bei kleinen Dateien (wie du sie warscheinlich hast) fast nichts.mfg Ubuntu
-
- Offizieller Beitrag
Dateien schreiben/lesen ist die wohl schlechteste Variante.
Am leichtesten zu verstehen ist wohl die Version mit einem versteckten Edit-Control:
Programm1:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>$hGui = GUICreate('Programm1')
[/autoit]
$HiddenInput = GUICtrlCreateEdit('', 0, 0, 0, 0)
GUICtrlSetState(-1, $GUI_HIDE)
GUISetState()
While True
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
$sExtMsg = GUICtrlRead($HiddenInput)
If $sExtMsg <> '' Then
MsgBox(0, 'Nachricht', $sExtMsg)
GUICtrlSetData($HiddenInput, '')
EndIf
WEndProgramm2:
Spoiler anzeigen
[autoit]
[/autoit]
While True
$input = InputBox('Programm2', 'Text zum senden eingeben', '')
If $input = '' Then Exit
ControlSetText('Programm1', '', '[CLASS:Edit; INSTANCE:1]', $input)
Sleep(50)
WEnd -
da würde ich eher über den zwischenspeicher gehn^^
hatte da noch intressante thread's archiviert
[ offen ] Wie sollen AutoIt Scripte unterinender kommunizieren?
http://www.autoitscript.com/forum/index.php?showtopic=22598&hl= -
Hilfe, da wird man ja von Vorschlägen überschüttet
Wenn noch jemand eine Idee hat bitte posten!Was ich letztenendes benutze ist wahrscheinlich sowieso egal, da es sich nur um millisekunden handelt.
-
Was ist mit EnvSet und EnvGet?
-
Kann mir jetzt noch jemand sagen, ob ich herausfinden kann, ob das Programm (dasselbe) schon läuft? Das Problem ist, dass das Programm natürlich den selben namen hat und kein GUI offen.
-
ProcessExists() ?
-
Programm (dasselbe)
-
Kann mir jetzt noch jemand sagen, ob ich herausfinden kann, ob das Programm (dasselbe) schon läuft? Das Problem ist, dass das Programm natürlich den selben namen hat und kein GUI offen.
ProcessExists()/ProcessList()
und die Funktion von hier.
Edit
Achso dasselbe Datei. Dann verwendest du die oben gennanten Funktionen und schaus ob der Prozess mehrmals existiert. -
Man könnte auch in einem Programm mit Func OnAutoItExit() eine Umgebungsvariable setzen und dann in dem anderen diese überprüfen.