Что нового

Как работает функция ProcessExists?

Rivald

Новичок
Сообщения
61
Репутация
1
Хотелось бы узнать какие api используются для реализации данной функции или есть какие-то альтернативные варианты получения process id. Заинтересовала одна функция GetProcessId, но незнаю какой хендл ей нужно передать.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Хендл, который возвращает функция OpenProcess() или GetCurrentProcess() для текущего процесса. А что не устраеват в ProcessExists()?

ProcessExists() делает снимок посредством CreateToolhelp32Snapshot() и ищет указанный процесс с помощью функций Process32First() и Process32Next(). Если процесс найден, то возвращает PID из структуры PROCESSENTRY32, в противном случае 0. Если задан PID, то возвращает его же.
 
Автор
R

Rivald

Новичок
Сообщения
61
Репутация
1
Мне нужно реализовать это в другом яп, в виде api. Не покажите пример PROCESSENTRY32 структуры?
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Rivald

Пример структуры в FASM

Код:
struct PROCESSENTRY32  
 .dwSize               dd ?  
 .cntUsage             dd ?  
 .th32ProcessID        dd ?  
 .th32DefaultHeapID    dd ?  
 .th32ModuleID         dd ?  
 .cntThreads           dd ?  
 .th32ParentProcessID  dd ?  
 .pcPriClassBase       dd ?  
 .dwFlags              dd ?  
 .szExeFile            rb 260   
ends

В MASM нужно просто подключить инклуд

Код:
include  Process.inc

....

LOCAL pe32:PROCESSENTRY32
 
Автор
R

Rivald

Новичок
Сообщения
61
Репутация
1
Я пользуюсь fasm-ом, пример данных для структуры можно увидеть? Сам я смогу осилить только первый и последний параметр.
 
Верх