Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.12;
Скачать: CL | DM;

Вниз

Убить приложение зная только его исполняемый файл   Найти похожие ветки 

 
Yuri Btr ©   (2002-05-31 15:01) [0]

Проблема весьма специфична. Имеется приложение, главная форма которого свёрнута, а в трее - иконка. В свёрнутом состоянии я так и несмог определить window title (и следовательно handle)главного окна этой программы. SPY++ и WinSight32 при просмотре инфы об этом приложении дают только длинный набор неупорядоченных символов. Мне нужно рестартовать это приложение, имея только имя его исполнительного файла.
Помогите пожалуйста. По видимому надо использовать EnumProcesses ?
Заранее спасибо.


 
Yuri Btr ©   (2002-06-03 16:24) [1]

Ну кто нибудь из мастеров, подкиньте пожалуйста идею.
Очень нужно убить приложение зная имя исполнительного файла.
Наверняка кто то знает ответ.


 
Song ©   (2002-06-03 17:26) [2]

TerminateProcess()


 
Cobalt ©   (2002-06-03 19:49) [3]

На RSDN есть пример поиска процессов в Вин9Х и НТ


 
MARcoDEN ©   (2002-06-03 21:14) [4]

Вот пример из моей программы:

var
PHandle: THandle;
ProcEntry:TProcessEntry32;
hProcess:THandle;
begin
PHandle:=CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS,0);
ProcEntry.dwSize:=sizeof(TProcessEntry32);
if (Process32First(PHandle, ProcEntry)) then
repeat
if ExtractFileName(ProcEntry.szExeFile) = "DIRECTCD.EXE" then
begin
// Получаем дескриптор процесса для его завершения
hProcess := OpenProcess(PROCESS_TERMINATE, FALSE, ProcEntry.th32ProcessID);
if hProcess = 0 then showmessage("Wrong Handle")
else
// Завершаем процесс
if not TerminateProcess(hProcess, DWORD(-1))
then showmessage("Couldn""t terminate process")
else showmessage("Process was terminated successfully");
CloseHandle( hProcess );
end;
until not Process32Next(PHandle, ProcEntry)


 
Yuri Btr ©   (2002-06-04 13:14) [5]

Спасибо to MARcoDEN
Только что надо подключить в USES, чтоб заработал TProcessEntry32?


 
Yuri Btr ©   (2002-06-04 15:13) [6]

Ура!!!
Всё работает, но есть процесс, который на
OpenProcess(PROCESS_TERMINATE, FALSE, ProcEntry.th32ProcessID)
выдаёт 0
Что это означает??? (У меня нет прав на убийство?)
И как я могу убить этот процесс, ведь из TaskManagera он прекрасно завершается....


 
Anatoly Podgoretsky ©   (2002-06-04 15:17) [7]

Это означает, что он не самоубийца :-)


 
Yuri Btr ©   (2002-06-04 16:01) [8]

to Anatoly Podgoretsky
Спасибо, очень ценное замечание :)

Ну а всё таки, как мне открыть процесс с правом на уничтожение?
Помогите решить эту проблему пожалуйста.



 
ДОБРОЖИЛАТЕЛ   (2002-06-05 09:34) [9]

TO Anatoly Podgoretsky © ТЫ НАВЕРНО ПОВЕРИЛ КАК ЭТО

(Это означает, что он не самоубийца :-)


ПОЭТОМУ И ЕРЕДНИЧАЕШЬ......................



 
cdaDmitriy ©   (2002-06-05 11:39) [10]

to Anatoly Podgoretsky СЛОВО НЕ ВОРОБЕЙ ВЫЛЕТИТ НЕ .........


 
Yuri Btr ©   (2002-06-06 16:02) [11]

Спсасибо ещё раз всем, но тот неубиваемый процесс оказался сервисом с правами System. Я применил sc.exe для остановки его,
но это справедливо для 2000 и XP, а в NT я к сожалению не знаю как остановить сервис наверное "net stop" и "net start"



Страницы: 1 вся ветка

Текущий архив: 2002.08.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
3-35215
svmagnum
2002-07-23 20:35
2002.08.12
Kak mne sdelat progu shtob ona rabotala s udallennoj Access db


3-35198
Prog_mail
2002-07-20 11:24
2002.08.12
Помогите с отчетом


1-35312
Filat
2002-07-26 20:16
2002.08.12
Есть *.zip, как узнать, что у него внутри?


1-35314
Fissher
2002-07-27 19:41
2002.08.12
Курсор


1-35235
НАИВный панк
2002-07-29 01:49
2002.08.12
как сделать что то типа консольного приложения...