InetMail() gibt unbekannte PID´s zurück ????

  • Hallo Leute,
    Kann mir einer sagen warum dieser Code keine gültige PID ausspuckt ?(

    [autoit]


    #include <Inet.au3>
    #include <Array.au3>

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

    $Pid = _INetMail("","","")
    $var = ProcessList()

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

    msgbox(0,"",$Pid)
    _ArrayDisplay($var)

    [/autoit]


    Ich bin dabei eine func zu schreiben die darauf wartet bis der Mail-Client im Fenster aktiv ist um dem Fenster per Send(^v) eine Dateianlage zu übergeben...

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

    2 Mal editiert, zuletzt von stinger2k (2. Mai 2010 um 17:38)

  • Zitat

    Warum taucht die PID in dem von ProcessList() erstelltem Array nicht auf?


    Weiß ich nicht, aber du wolltest doch die Fenster des Prozesses oder?

    Spoiler anzeigen
    [autoit]

    #include <Inet.au3>
    #include <Process.au3>
    #include <Array.au3>

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

    $Process = _ProcessGetName(_INetMail("", "", ""))
    MsgBox(0, "", $Process)

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

    $aResult = _ProcessGetWindows($Process)
    _ArrayDisplay($aResult)

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

    Func _ProcessGetWindows($sProcessName)
    $aWinList = WinList()
    $sWindowsFound = ""
    If IsInt($sProcessName) Then
    For $i = 1 To $aWinList[0][0]
    If WinGetProcess($aWinList[$i][0]) = $sProcessName And $aWinList[$i][0] <> "" Then $sWindowsFound &= $aWinList[$i][0] & '|'
    Next
    Else
    For $i = 1 To $aWinList[0][0]
    If _ProcessGetName(WinGetProcess($aWinList[$i][0])) = $sProcessName And $aWinList[$i][0] <> "" Then $sWindowsFound &= $aWinList[$i][0] & '|'
    Next
    EndIf
    If $sWindowsFound = "" Then Return -1
    Return StringSplit(StringTrimRight($sWindowsFound, 1), "|", 2)
    EndFunc ;==>_ProcessGetWindows

    [/autoit]


    Das zeigt mir alle Thunderbird Fenster an. ;)

  • oh mir leider aucg nicht. Na dann....

    Jetzt muss ich nur noch zum Fenstertitel kommen damit ich überprüfen kann ob der gestartete Prozess aktiv und im Vordergrund ist...

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

  • Ich brauche den Titel um mit WinWaitActive () darauf zuzugreifen...

    Hat jemand eine Idee, den in der Hilfe gibt es keine fertigen Funktionen um über die PId oder Hwnd an den Fenstertitel zu kommen...?

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

  • Zitat

    Ich brauche den Titel um mit WinWaitActive () darauf zuzugreifen...

    Hat jemand eine Idee, den in der Hilfe gibt es keine fertigen Funktionen um über die PId oder Hwnd an den Fenstertitel zu kommen...?


    Lern lesen.... :rolleyes:

  • Zitat

    Lern lesen.... :rolleyes:

    Und nun ein beispielscript, damit du mich verstehst auf was ich hinaus will.

    Spoiler anzeigen
    [autoit]


    #include <Inet.au3>
    #include <Array.au3>
    Global $aResult[1]
    $var =_INetMail("", "", "")
    $pid_name = ProcessList ()
    $handle_name = WinList ()
    For $i = 1 to $pid_name[0][0]
    ReDim $aResult[UBound($aResult) + 1][4]
    $aResult[Ubound($aResult) - 1][0] = $handle_name[$i][0]
    $aResult[UBound($aResult) - 1][1] = $pid_name[$i][0]
    $aResult[UBound($aResult) - 1][2] = $handle_name[$i][1]
    $aResult[UBound($aResult) - 1][3] = $pid_name[$i][1]
    Next
    _ArrayDisplay($aResult)

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


    Nun möchte ich aber noch das die bezüge zu den einzelnen Fenstertiteln und Prozessen inkl. hWnd und PId im Array stimmen....

    Ich hoffe das war nun verständlich...

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

  • damit ich über die PID den WindowTitle und gleichzeitig das Handle ausfindig machen kann... Soll vielleicht mal eine UDF mit Sinn ergeben.

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

  • Tadaaa ^^.

    Spoiler anzeigen
    [autoit]

    #include <Inet.au3>
    #include <Process.au3>
    #include <Array.au3>

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

    $Process = _ProcessGetName(_INetMail("", "", ""))
    MsgBox(0, "", $Process)

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

    $aResult = _ProcessGetWindows($Process)
    _ArrayDisplay($aResult)

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

    Func _ProcessGetWindows($sProcessName)
    $aWinList = WinList()
    $sWindowsFound = ""
    If IsInt($sProcessName) Then
    For $i = 1 To $aWinList[0][0]
    If WinGetProcess($aWinList[$i][0]) = $sProcessName And $aWinList[$i][0] <> "" Then $sWindowsFound &= $aWinList[$i][0] & '|'
    Next
    Else
    For $i = 1 To $aWinList[0][0]
    If _ProcessGetName(WinGetProcess($aWinList[$i][0])) = $sProcessName And $aWinList[$i][0] <> "" Then $sWindowsFound &= $i & '|'
    Next
    EndIf
    If $sWindowsFound = "" Then Return -1
    $aSplitTmp = StringSplit(StringTrimRight($sWindowsFound, 1), "|", 2)
    Local $aReturn[UBound($aSplitTmp)][2]
    For $i = 0 To UBound($aSplitTmp) - 1
    $aReturn[$i][0] = $aWinList[$aSplitTmp[$i]][0]
    $aReturn[$i][1] = $aWinList[$aSplitTmp[$i]][1]
    Next
    Return $aReturn
    EndFunc ;==>_ProcessGetWindows

    [/autoit]
  • TaDaa ==> meins: :thumbup:

    [autoit]


    #include <Array.au3>
    #include <Process.au3>

    Global $aResult[1]

    $handle_name = WinList()

    For $i = 1 To $handle_name[0][0]
    ReDim $aResult[UBound($aResult) + 1][5]
    $aResult[UBound($aResult) - 1][0] = _ProcessGetName(WinGetProcess($handle_name[$i][1]))
    $aResult[UBound($aResult) - 1][1] = WinGetProcess($handle_name[$i][1])
    $aResult[UBound($aResult) - 1][2] = $handle_name[$i][0]
    $aResult[UBound($aResult) - 1][3] = $handle_name[$i][1]
    Next
    _ArraySort($aResult)
    _ArrayDisplay($aResult)

    [/autoit]
    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o