FF.au3 - Mehrere Instanzen steuern

  • Guten Tag liebe Community!
    Ich habe ein Problem mit der FF.au3, die ansonsten einwandfrei läuft.
    Wie kann ich mehrere Instanzen (jew. versch. FF-Profile) von Firefox mit der FF.au3 steuern?
    Am einfachsten wäre ja die Angabe der ProzessID, welche man als Rückgabewert von FFStart erhalten würde... Ist das überhaupt möglich?
    Vielen Dank für eure Hilfe.

    2 Mal editiert, zuletzt von dsbghost (15. Januar 2010 um 17:05)

  • Danke für die schnelle Antwort.
    Ich hatte zuerst versucht, allen Funktionen die ich so brauche (_FFOpenURL etc.) einen Parameter $iSocket zu geben, der dann von allen weiteren Funktionen wie Cmd, Send, Recieve usw. benutzt werden um die Befehle über den richtigen Socket zu senden. Dies ist jedoch gescheitert.
    Nun zu deiner Antwort mit den Ports: Sagen wir ich starte die 1. Instanz auf dem Port x, die 2. Instanz auf dem Port y. Wenn ich nun _FFOpenURL() verwenden möchte, muss diese Funktion als Parameter u.a. diesen Port enthalten oder? Müsste ich dann diesen Parameter an alle weiteren Funktionen wie Cmd etc. weitergeben?

  • Für so etwas ist die Variable $_FF_GLOBAL_SOCKET nutzbar.
    (siehe auch: Globale Variablen)
    Diese enthält den aktuellen Socket.

    Anwendungsschema:

    Spoiler anzeigen
    [autoit]

    Global $aInstanz[2]

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

    ; instanz 1
    _FFStart( .... , 4242)
    $aInstanz[0] = $_FF_GLOBAL_SOCKET

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

    ; instanz 2
    _FFStart(.... , 4243)
    $aInstanz[1] = $_FF_GLOBAL_SOCKET

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

    ; arbeiten mit Instanz 1:
    $_FF_GLOBAL_SOCKET = $aInstanz[0]
    _FFOpenURL("autoit.de")

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

    ; arbeiten mit Instanz 2;
    $_FF_GLOBAL_SOCKET = $aInstanz[1]
    _FFOpenURL("autoit.de")

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

    ; arbeiten mit Instanz 1:
    $_FF_GLOBAL_SOCKET = $aInstanz[0]
    _FFOpenURL("google.de")

    [/autoit]
  • Danke für die Erläuterung. Das ist viel einfacher als ich dachte.
    Ich bin wohl noch zu sehr im OOP-Modell mit Klassen drin und habe zu kompliziert gedacht...