Попробуйте этот код. Это работает для меня на Windows 7. Я подумал: «Если диспетчер задач может это сделать, то я могу это сделать». Я не уверен, требуются ли для этого права администратора, но я проверил с .
В этом примере я получаю информацию из winlogon.exe, который запускается с учетными данными SYSTEM.
Вывод на мою машину:
Process ID: 584
Process handle: 0x00000198
GDI objects: 6
, который соответствует тому, что показывает диспетчер задач.
![winlogon.exe showing SYSTEM and 6 GDI objects](https://i.stack.imgur.com/JdtQ9.png)
#RequireAdmin
#include <WinAPI.au3>
Const $PROCESS_QUERY_LIMITED_INFORMATION = 0x1000
; Get ID to process
$id = ProcessExists("winlogon.exe")
If @error Then
ConsoleWrite("Error in ProcessExists: " & @error & @CRLF)
Exit
EndIf
ConsoleWrite("Process ID: " & $id & @CRLF)
; Get handle to process from the ID
$handle = _WinAPI_OpenProcess($PROCESS_QUERY_LIMITED_INFORMATION, False, $id)
If @error Then
ConsoleWrite("Error in _WinAPI_OpenProcess: " & @error & @CRLF)
Exit
EndIf
ConsoleWrite("Process handle: " & $handle & @CRLF)
; Get number of GDI objects via GetGuiResources
$gdiCount = _WinAPI_GetGuiResources(0, $handle)
If @error Then
ConsoleWrite("Error in _WinAPI_GetGuiResources: " & @error & @CRLF)
Exit
EndIf
ConsoleWrite("GDI objects: " & $gdiCount & @CRLF)
; Close handle to process
_WinAPI_CloseHandle($handle)