Вверх ↑
Этот топик читают: Гость
Ответов: 245
Рейтинг: 3
#241: 2011-05-15 02:24:49 ЛС | профиль | цитата
можешь сделать определение path file для процессов которые не запущены
карма: 0

0
Разработчик
Ответов: 26069
Рейтинг: 2121
#242: 2011-05-15 02:26:48 ЛС | профиль | цитата
goluzov писал(а):
можешь сделать определение path file для процессов которые не запущены

И как ты себе представляешь вытаскивание пути к процессу, которого нет в памяти
карма: 22

0
Ответов: 245
Рейтинг: 3
#243: 2011-05-15 02:48:09 ЛС | профиль | цитата
вытащить из базы wmi... там ведь есть file path и id
------------ Дoбавленo в 02.48:
wmi сохраняет все id на жесткий
карма: 0

0
Разработчик
Ответов: 26069
Рейтинг: 2121
#244: 2011-05-15 02:54:17 ЛС | профиль | цитата
goluzov писал(а):
wmi сохраняет все id на жесткий

Никогда этим не занималя.
Может 1nd1g0 поможет, я понятия не имею, как это делается
карма: 22

0
Ответов: 245
Рейтинг: 3
#245: 2011-05-15 03:13:03 ЛС | профиль | цитата
а завершение процесса сможешь сделать?
------------ Дoбавленo в 03.13:
может всетаки поправишь EnumProcess
карма: 0

0
Разработчик
Ответов: 26069
Рейтинг: 2121
#246: 2011-05-15 03:16:56 ЛС | профиль | цитата
goluzov писал(а):
может всетаки поправишь EnumProcess

Пока у меня не будет x64 версии, я ничего сделать не смогу, увы. Мы только начали адаптировать пакет по новые системы, и в ближайшее время x64 в проекте не было
карма: 22

0
Ответов: 245
Рейтинг: 3
#247: 2011-05-15 03:42:45 ЛС | профиль | цитата
http://forum.hiasm.com/forum_serv.php?q=56&id=2393 task manager XP 64

только debugger 64 не нашел... который запускается на вин32
карма: 0

0
Разработчик
Ответов: 26069
Рейтинг: 2121
#248: 2011-05-15 04:17:43 ЛС | профиль | цитата
goluzov, поиски по нэту пока ничего не дали. Все используют ту же функцию, что и штатный компонент. Проблема может крыться в запрете доступа

Попробуй поставить в код метода _work_doKill EnumProcess отладчик и посмотреть, что выдаст при попытке уничтожить процесс



procedure ThiEnumProcess._work_doKill;
var
proc: THandle;
begin
SetDebugPrivilege(DebugPrivilege);
proc := OpenProcess(PROCESS_TERMINATE,true,procEntry.th32ProcessID);
TerminateProcess(proc, 1);
_debug;
CloseHandle(proc);
end;
карма: 22

0
Ответов: 245
Рейтинг: 3
#249: 2011-05-15 06:20:17 ЛС | профиль | цитата
щас проверил doKill, работает везде! даже на winXP 64 и windows 98
только doTerminate не работает

нашел програму! весит 12кб... перечисляет процессы... работает под XP 64. есть исходники!!!!

http://forum.hiasm.com/forum_serv.php?q=56&id=2397
карма: 0

0
Ответов: 3889
Рейтинг: 362
#250: 2011-05-15 08:59:49 ЛС | профиль | цитата
goluzov писал(а):
можешь сделать определение path file для процессов которые не запущены
Найти все исполнимые файлы на диске . AFAIK, эта информация о процессе хранится ровно до момента закрытия Handle завершённого процесса. Я не случайно выводил в примере Handle. Чаще он совпадает с PID, но перестраховался. Чтобы не обнадёживать скажу сразу, вероятность 99% ,что Handle уже отпущен и структура с информацией уничтожена т.к. мало кому нужен Handle завершённого процесса и никто не будет его держать, ждать, пока Ваша программа подключится и прочёт, что ей надо. Я так понимаю, вариант с собственным логгером в автозагрузке даже упоминать не стоит?
карма: 1

0
Разработчик
Ответов: 26069
Рейтинг: 2121
#251: 2011-05-15 13:09:48 ЛС | профиль | цитата
goluzov писал(а):
щас проверил doKill, работает везде! даже на winXP 64

Не может он работать на WinXP x64, тк не работает поиск по имени процесса. Покакжи схему, как ты делаешь doTerminate

Посмотрел код, практически все то же самое, за исключением некоторых моментов.

Но как ты не можешь понять, я ничего не смогу сделать, пока у меня не будет WinXP x64. Да и не предполагалась изначально работоспособность компонента в серверных ОС. Для серверных ОС надо писать ручками и самому, имея под собой серьезную базу знаний. Пакет Windows расчитан на пользовательские ОС x86 и никак не на серверные ОС x64
карма: 22

0
Ответов: 245
Рейтинг: 3
#252: 2011-05-15 16:19:05 ЛС | профиль | цитата
nesco писал(а):
Не может он работать на WinXP x64, тк не работает поиск по имени процесса


один процесс то он видит!
------------ Дoбавленo в 14.29:
пример с иходниками не решил ничево?
------------ Дoбавленo в 15.09:
делаю dokill во время перечисляения процессов... и если project4.exe = project4.exe то kill текущий процесс
------------ Дoбавленo в 16.18:
в исходниках есть pCreateToolhelp32Snapshot ты вроде как такое делал у себя
------------ Дoбавленo в 16.19:
помог вобще исходник?
карма: 0

0
Разработчик
Ответов: 26069
Рейтинг: 2121
#253: 2011-05-15 18:02:20 ЛС | профиль | цитата
goluzov писал(а):
pCreateToolhelp32Snapshot

Не будет нормально работать в x64, еще и серверных, ОС.
goluzov писал(а):
помог вобще исходник?

Он на С++
goluzov писал(а):
делаю dokill во время перечисляения процессов... и если project4.exe = project4.exe то kill текущий процесс

Достаточно сделать поиск по имени, он автоматически выберет нужный процесс, не надо ничего сравнивать, все сделано внутри кода

Предлагаю отказаться от адаптирования компонента под серверные ОС x64. Про это я уже написал
nesco писал(а):
Пакет Windows расчитан на пользовательские ОС x86 и никак не на серверные ОС x64


И компилировать свое ПО из-под FPC под серверную ОС x64 я бы не рискнул. А под Delphi прекрасно работает WMI
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#254: 2011-05-16 03:51:42 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-04 12:31:58
карма: 0

0
Ответов: 245
Рейтинг: 3
#255: 2011-05-16 04:44:04 ЛС | профиль | цитата
code_23977.txt

вот этот код работает на win xp 64
------------ Дoбавленo в 03.55:
не то что надо?
------------ Дoбавленo в 04.44:
тебе надо на fpc?
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)