Run() und WinGetProcess() liefern verschiedene PIDs

  • Code
    [autoit]


    $param = StringTrimLeft($CmdLine[1], 1)
    $run_1 = IniRead(@ScriptDir & "\fse4wm.ini", $param, "exe", "kA")
    $run_2 = IniRead(@ScriptDir & "\fse4wm.ini", $param, "wd", "kA")
    If $run_1 = "kA" Or $run_2 = "kA" Then
    MsgBox(48, "FSE4WM - Fehler", "Das Spiel '" & $param & "' ist fehlerhaft konfiguriert!" & @CRLF & "Bitte prüfen Sie die Konfiguration!")
    Exit
    Else
    $pid = Run($run_1, $run_2)
    $name = _ProcessGetName($pid)
    MsgBox(0, "", $name)
    $windows = WinList()
    _ArrayDisplay($windows)
    For $i = 1 To $windows[0][0]
    $pid_of_win = WinGetProcess($windows[$i][0])
    MsgBox(0, $pid, $pid_of_win & " (" & $windows[$i][0] & ")")
    If $pid = $pid_of_win Then
    MsgBox(0, "Fund", $windows[$i][0])
    EndIf
    Next
    MsgBox(0, "", "111")
    ;~ WinWaitActive($name)
    Exit
    EndIf

    [/autoit]

    Wie der Titel schon sagt, liefert mir der Run()-Befehl eine PID. Auch der WinGetProcess()-Befehl liefert mir eine PID.
    Allerdings handelt es sich dabei um verschiedene.

    Beispiel: Ich starte ein Programm und erhalte bei Run() die PID 1338. Beim Fenster des gestarteten Prozesses liefert mir die unterstrichene Box dann irgendwas anderes, zum Beispiel 5768.

    Ich würde gerne mit dem Fenster des gestarteten Prozesses interagieren. Allerdings ist das recht schwierig, wenn ich nicht herausfinden kann, welches Fenster zum Prozess gehört.

    Hat jemand einen Rat oder Abhilfe?

    Einmal editiert, zuletzt von _DICE_ (15. April 2011 um 19:31)

    • Offizieller Beitrag

    Schau dir mal im Taskmanager an, ob dein gestartetes Prog mehreren Prozesse laufen läßt.

  • Hallo _DICE_,

    afair kann man bei allen Funktionen die sich auf Erweiterte Fenstertiteldefinitionen beziehen auch das Handle anstelle des Titels angeben, benutze also einmal

    [autoit]

    $pid_of_win = WinGetProcess($windows[$i][1])

    [/autoit]

    da ich davon ausgehe dass es ein 2. Fenster (Explorer Ordner??) gibt das den gleichen Namen hat wie dein Spiel,

    mfg autoBert

  • Danke für die Hinweise über brauchbare Tools. Der Taskmanager hätte es allerdings auch getan.
    Das Problem war einfach, dass das von mir aufgerufene Spiel selbst eine andere exe aufruft (quasi ein Launcher). Das Fenster gehört zu der zweiten exe, wodurch die PID zwangsläufig abweicht. :whistling: