Что нового

Как узнать Handle консольного процесса (безоконного приложения).

VladUs

Скриптер
Сообщения
621
Репутация
181
Необходимо узнать Handle (не PID) процесса не имеющего окон. Допустим Winlogon.exe или другой какой-нибудь службы
Для этого использую функцию
Код:
_WinAPI_OpenProcess()

Вот код :

Код:
#Include <WinAPI.au3>
Local const $PROCESS_QUERY_INFORMATION = 0x0400 ; константа доступа для получения информации о процессе
$Boolen = False  ; использовать возвращенный Handle с другим процессом. Ставим False
$Pid = "6020" ; Допустим необходимо вернуть Handle процесса, PID которого 6020

$hProc =_WinAPI_OpenProcess($PROCESS_QUERY_INFORMATION,$Boolen, $Pid)

msgbox(1, "Handle",$hProc )


Какой бы я не подставил, в переменную $Pid, PID какого - нибудь процесса, возвращается одно и тоже значение
0x00000628

Что я делаю не так ?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
VladUs [?]
возвращается одно и тоже значение
У меня разные:
Код:
#include <WinAPI.au3>

Global Const $PROCESS_QUERY_INFORMATION = 0x0400
$Boolen = False
$j = 0
$aProcess = ProcessList()

If $aProcess[0][0] Then
	For $i = 1 To $aProcess[0][0]
		$hProc = _WinAPI_OpenProcess($PROCESS_QUERY_INFORMATION, $Boolen, $aProcess[$i][1])
		If $hProc Then
			$j += 1
			ConsoleWrite($j & '(' & $aProcess[0][0] & ') Name: ' & $aProcess[$i][0] & ' -> ' & 'PID: ' & _
					$aProcess[$i][1] & ' -> ' & 'Handle: ' & $hProc & @CR)
		EndIf
	Next
EndIf
 
Верх