Skriptentwurf: Wie zwei Prozesse während der Laufzeit miteinander in Einklang bringen

  • Hi,
    während ich auf Webseiten Suchbegriffe für eMule durch Kopieren in den Zwischenspeicher auf die Warteschlange schicke, soll ein zweiter Prozess eben diese Warteschlange der Suchbegriffe nacheinander automatisch in eMule eintragen, sobald die Suche wieder freigegeben ist. Es kann aber auch sein, dass beim letztgenannten Prozess der Warteschlangenabbau sich im Leerlauf befindet, weil der Ansturm von Suchbegriffen ausgeblieben ist.

    Das sind eigentlich zwei Prozesse, die aber ineinander engverzahnt sind und deren Übergabe >>> Warteschlange ständig aktualisiert werden muss. Wären wohl zwei .exe-Dateien erforderlich . Aber wie hält man sich eine Variable, sprich Warteschlange, aktuell, auf der beide zugreifen müssen? Der Zwischenspeicher als Übergabe ist durch die Kopierer belegt. Übergabe in einer Textdatei?? -> da gibt es sicherlich Konflikte, während der eine Prozess Schreiben und der andere nur Lesen will. Einrichten einer Systemvariablen? Wie richte ich die ein, wie kann ich sie wieder löschen und können zwei Progresse gleichzeitig mit Schreiben und Lesen auf sie zugreifen? Oder gibt es eine andere Alternative, die viel eleganter und sauberer ist?. Um viele viele Vorschläge bitte ich ;) und danke Euch schon im voraus Jan

    Einmal editiert, zuletzt von janrenzlow (9. April 2008 um 15:27)

  • Kann eine Systemvariable ein Array sein? Keine Ahnung weisst Du es oder wie sollen sich zwei Prozesse ein und dasselbe Array teilen? Global probier es gleich aus. Jan

    Deklaration als Global funktioniert nicht über ein Skript hinweg, das es zwei Skripte benutzen können.

    Einmal editiert, zuletzt von janrenzlow (9. April 2008 um 18:26)

    • Offizieller Beitrag

    Du könntest in dem einen Script ein Edit-Control erstellen und von dem anderen Script Daten dorthin senden. Mit GUICtrlRead kann man diese dann auslesen.

    Beispiel:

    Script 1 mit Edit-Control (zuerst starten):

    [autoit]


    #include <GUIConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    $gui = GUICreate('Test',250,200, 100,200)

    [/autoit][autoit][/autoit][autoit]

    $edit = GUICtrlCreateEdit('', 10, 10, 230, 180)

    [/autoit][autoit][/autoit][autoit]

    GUISetState()

    [/autoit][autoit][/autoit][autoit]

    Do
    $msg = GUIGetMsg ()
    Until $msg = $GUI_EVENT_CLOSE

    [/autoit]

    Nachdem das erste Script läuft, dieses Script starten:

    [autoit]


    $Titel = 'Test'
    $ControlID = 3
    ControlSend($Titel, '', $ControlID, '1. Zeile mit Text' & @LF)
    ControlSend($Titel, '', $ControlID, '2. Zeile mit Text' & @LF)
    ControlSend($Titel, '', $ControlID, '3. Zeile mit Text' & @LF)
    ControlSend($Titel, '', $ControlID, '4. Zeile mit Text' & @LF)
    ControlSend($Titel, '', $ControlID, '5. Zeile mit Text' & @LF)

    [/autoit]
  • Der Zwischenspeicher geht nicht , der ist doch mit in Benutzung, weil ich per Copy & Paste im Internet auf der Jagd nach Suchbegriffen bin.

    Das nit dem EditControl auslesen ist ne nette Lösung, an die nicht drauf kam. Momentan neige ich aber mehr zur Systemvariablen. Kleine Probeläufe funktionierten wunderbar.

    Zwei Skripte sind leider notwendig eines , dass wenn ich unterwegs im Internet bin meine Fundstücke in Systemvariable einspeist und ein anderes, das in Wartestellung alle Fundstücke in eMule-Suche nacheinander einträgt und ständig nahschaut, ob was für die Suche eingetroffen ist.

    Danke allen Jan :rock:

  • Ein Prozess schreibt in die Datenbank und der zweite liest + löscht.
    Wenn nix da ist, hat der zweite auch nichts zu tun.

    Mit der AutoIt-Hilfe und der Beschreibung hier im Forum ist das gar nicht so schwer.

    Grüße
    Carsten