PID = run() -> möchte aber HWND

  • Hallo Leute,

    ich starte Mozilla Firefox mit $Firefox=Run($Firefox_file).
    $Firefox ist jetzt eine PID und ich möchte jetzt gerne die HWND haben, damit ich das Fenster aktivieren kann mit WinActivate($Firefox)...


    Könnte mir da jemand helfen, oder gehe ich falsch vor... beschaäftige mich noch nicht lange mit AutoIt...

    Gruß HHS

  • Hi!


    Wegen aktivieren geht ja auch nur WinActivate -

    musst eben bei WinTitleMatchMode die richtige Option treffen!

    Mfg


    Huggy

  • genau diese Funktion nutze ich, aber leider Funktioniert dies nur mit HWND (handles) und nicht mit PID (ProcessID).


    Noch ne Frage, bei Send({ENTER}), gibt es dort eine Taste, damit das {ENTER} automatisch geschrieben wird, wenn ich die ENTER-Taste drücke?

    Finde leider nichts mit der Suchfunktion...


    Gruß HHS


  • Nein, diese Funktion funktioniert auch mit Fensternamen..

    ZB:

    AutoIt Forum - Deutsch | Hilfe & Unterstützung | PID = run() -> möchte aber HWND | Antwort erstellen - Mozilla Firefox


    wenn du das jetzt eingibst als String, wirds gehen :D

    • Offizieller Beitrag

    Hi,

    wenn du es unbedingt so machen willst :

    [autoit]

    #include<Array.au3>
    $a = ProcessGetId('TOTALCMD.EXE')
    ConsoleWrite(ProcessGetWindow($a[1]) & @CRLF)
    WinSetState(ProcessGetWindow($a[1]), "", @SW_HIDE)
    Sleep(2000)
    WinSetState(ProcessGetWindow($a[1]), "", @SW_SHOW)

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

    Func ProcessGetWindow($PId)
    If IsNumber($PId) = 0 Or ProcessExists(ProcessGetName($PId)) = 0 Then
    SetError(1)
    Else

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

    Local $WinList = WinList()
    Local $i = 1
    Local $WindowTitle = ""

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

    While $i <= $WinList[0][0] And $WindowTitle = ""
    If WinGetProcess($WinList[$i][0], "") = $PId Then
    $WindowTitle = $WinList[$i][0]
    Else
    $i = $i + 1
    EndIf
    WEnd

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

    Return $WindowTitle
    EndIf
    EndFunc ;==>ProcessGetWindow

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

    Func ProcessGetId($Process)
    If IsString($Process) = 0 Then
    SetError(2)
    ElseIf ProcessExists($Process) = 0 Then
    SetError(1)
    Else

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

    Local $PList = ProcessList($Process)
    Local $i
    Local $PId[$PList[0][0] + 1]

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

    $PId[0] = $PList[0][0]

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

    For $i = 1 To $PList[0][0]
    $PId[$i] = $PList[$i][1]
    Next

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

    Return $PId
    EndIf
    EndFunc ;==>ProcessGetId

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

    Func ProcessGetName($PId)
    If IsNumber($PId) = 0 Then
    SetError(2)
    ElseIf $PId > 9999 Then
    SetError(1)
    Else

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

    Local $PList = ProcessList()
    Local $i = 1
    Local $ProcessName = ""

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

    While $i <= $PList[0][0] And $ProcessName = ""
    If $PList[$i][1] = $PId Then
    $ProcessName = $PList[$i][0]
    Else
    $i = $i + 1
    EndIf
    WEnd

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

    Return $ProcessName
    EndIf
    EndFunc ;==>ProcessGetName

    [/autoit]

    So long,

    Mega

  • @th.meger: genau sowas habe ich gesucht!

    @huggy: okay, der Fensternahme funktioniert auch, ich habe aber nur PID gehabt, das run() nur eine PID wiedergibt.


    Gibt es denn jetzt eine Funktion die die Tasten direkt in SciTE in Code wandelt?


    Gruß HHS

  • also....

    mit dem Befehl Send() werden ja Tastendrücke simuliert...
    Jetzt gibt es Tasten wie {ENTER}{TAB}{SPACE} usw...

    Diese schreibe ich jetzt immer, also {auf ENTER tippen und wieder }zu auf der Tastatut ein...
    Meine Frage nun, gibt es eine Taste, z.B. SHIFT, die ich gedrückt halte und dann die ENTER-Taste drücke, das SciTE dies dann mitbekommt und den Code {ENTER} schreibt, also das ich das nicht alles einzeln schreiben muss...

    Hoffe nun ist es verständlich....?!?!


    Gruß HHS