Nur mal eine kleine Frage:Wie kann man in AutoIt an ein Handle eines Prozesses kommen?Oder ist die PID das Handle?Das würde mich mal ganz allgemein interessieren
Prozesshandle?
-
- [ gelöst ]
-
masterplc -
21. August 2013 um 17:57 -
Geschlossen -
Erledigt
-
-
Sucht du diese Funktionen?
[autoit]WinGetHandle
[/autoit]
ProcessExists
ProcessListMfG
-
[autoit]
;~ 1 = Fenster existiert.
[/autoit][autoit][/autoit][autoit]
;~ 2 = Fenster ist sichtbar.
;~ 4 = Fenster ist freigegeben.
;~ 8 = Fenster ist aktiv.
;~ 16 = Fenster ist minimiert.
;~ 32 = Fenster ist maximiert.
#include <Array.au3>
#include <Process.au3>
Global $list = ProcessList()_ArrayDisplay($list,"test")
[/autoit][autoit][/autoit][autoit]Func _GetProcessPath($GPPpid)
[/autoit][autoit][/autoit][autoit]
$colItems = ""
$strComputer = "localhost"$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
[/autoit][autoit][/autoit][autoit]
$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Process WHERE processid = ' & $GPPpid, "WQL", 0x10 + 0x20)If IsObj($colItems) Then
[/autoit][autoit][/autoit][autoit]
For $objItem In $colItems
Return $objItem.ExecutablePath
Next
Else
Return ""
EndIf
EndFunc ;==>_GetProcessPathFunc _WinGetByPID($iPID, $nArray = 1)
[/autoit]
If IsString($iPID) Then $iPID = ProcessExists($iPID)
Local $aWList = WinList(), $sHold
For $iCC = 1 To $aWList[0][0]
If WinGetProcess($aWList[$iCC][1]) = $iPID And _
BitAND(WinGetState($aWList[$iCC][1]), 2) Then
If $nArray Then Return $aWList[$iCC][0]
$sHold &= $aWList[$iCC][0] & Chr(1)
EndIf
Next
If $sHold Then Return StringSplit(StringTrimRight($sHold, 1), Chr(1))
Return SetError(1, 0, 0)
EndFunc ;==>_WinGetByPID