Проверка процесса
#1
Отправлено 05 февраля 2007 - 17:44
Как можно сделать ?
#2
Отправлено 05 февраля 2007 - 23:30
#4
Отправлено 06 февраля 2007 - 17:48
Вы не уточняли по какому критерию вы хотите распознавать процесс. Если имя процесса вам не подходит, а вы хотите его распознавать по PID, то не уверен, что ModuleVP вам поможет (покопайтесь в параметрах ModuleVP, может что-то и отыщете). Ну и, понятное дело, всегда есть возможность работать с функциями Win32 API напрямую.А поподробнее можно ? Как она проверит наличие процесса с известным ID.
#5
Отправлено 07 февраля 2007 - 09:47
Насчет Win32 API какую функцию можно использовать ???? Я пробовал OpenProcess, в хелпе написано что она возвращает NULL если процесс открыть не удалось. Однако даже если процесса нет , Null она невозвращает всегда возвращает различный хендл к процессу. Если есть кусок кода , буду благодарен.Вы не уточняли по какому критерию вы хотите распознавать процесс. Если имя процесса вам не подходит, а вы хотите его распознавать по PID, то не уверен, что ModuleVP вам поможет (покопайтесь в параметрах ModuleVP, может что-то и отыщете). Ну и, понятное дело, всегда есть возможность работать с функциями Win32 API напрямую.А поподробнее можно ? Как она проверит наличие процесса с известным ID.
#6
Отправлено 07 февраля 2007 - 10:49
#7
Отправлено 07 февраля 2007 - 16:10
Примера кода у меня нет. Посмотрите на функцию EnumProcesses. Она возвращает список всех PID в системе. Если ваш PID окажется в этом списке, значит процесс еще жив.Насчет Win32 API какую функцию можно использовать ???? Я пробовал OpenProcess, в хелпе написано что она возвращает NULL если процесс открыть не удалось. Однако даже если процесса нет , Null она невозвращает всегда возвращает различный хендл к процессу. Если есть кусок кода , буду благодарен.
P.S. А у вас сразу несколько cmd.exe запущено во время выполнения теста?
#8
Отправлено 07 февраля 2007 - 16:30
Впринципе, я могу добиться чтоб в каждый момент времени был запущен только один cmd. Для данного случая есть варианты ????Примера кода у меня нет. Посмотрите на функцию EnumProcesses. Она возвращает список всех PID в системе. Если ваш PID окажется в этом списке, значит процесс еще жив.Насчет Win32 API какую функцию можно использовать ???? Я пробовал OpenProcess, в хелпе написано что она возвращает NULL если процесс открыть не удалось. Однако даже если процесса нет , Null она невозвращает всегда возвращает различный хендл к процессу. Если есть кусок кода , буду благодарен.
P.S. А у вас сразу несколько cmd.exe запущено во время выполнения теста?
Незнаю с чем связано, но ModuleVP неработает для консольных приложений (у меня во всяком случае). Может есть какие-нить замечания по ее использованию ??? Я пишу просто
Result = ModuleVP (Exists, "Name=cmd.exe", "VP=Module Existence")
она для cmd всегда возвращает Result=0 (во время отладки) .
Пойду пока смотреть EnumProcesses .....
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных