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

Вниз

Красиво убить другое приложение?   Найти похожие ветки 

 
Serhio ©   (2003-11-02 19:11) [0]

Подскажите, как можно красиво убить чужое приложение?

Ситуация такая: я знаю дескриптор главного окна приложения и посылаю ему WM_CLOSE, если у приложения в данный момент не открыто ни одного дочернего окна, то оно закрывается без проблем, если же было открыто дочернее окно, то приложение закрывается, но винда говорит "Application Error" - не хорошо


 
Nick Denry ©   (2003-11-02 20:53) [1]

TerminateProcess see F1 Win32SDK


 
kostik78ua   (2003-11-03 09:44) [2]

function NTKillProcess(iProcessID: Integer): Integer;
var
hProcess: Integer;
pfnExitProcess: Pointer;
hInstance: Integer;
hThread: DWORD;
begin
Result:=ERROR_SUCCESS;

hProcess:=OpenProcess(PROCESS_ALL_ACCESS, FALSE, iProcessID);

if hProcess > 0 then begin
hInstance:=GetModuleHandle("KERNEL32.DLL");
pfnExitProcess:=GetProcAddress(hInstance, "ExitProcess");
hThread:=CreateRemoteThread(hProcess, nil, 0, pfnExitProcess, nil, 0,hThread);
if hThread>0 then begin
WaitForSingleObject(hThread, 40000);
if not CloseHandle(hThread) then Result:=GetLastError;
end else Result:=GetLastError;
CloseHandle(hProcess);
end else Result:=GetLastError;
end;

Копирайт - не мой :)


 
Дубинин Алексей ©   (2003-11-03 23:57) [3]

Например H это тот дескриптор который ты знаешь. Далее проще...

var
a: Cardinal;
H1: HWND;
begin
GetWindowThreadProcessID(H, @a);
H1 := OpenProcess(PROCESS_TERMINATE, True, a);
TerminateProcess(a, 0);//Убьет наповал :-)
end;


 
Serhio ©   (2003-11-04 17:31) [4]

Спасибо, заработало, только в приведенном примере, в строке
TerminateProcess(a, 0);//Убьет наповал :-)
вместо "а" надо поставить "H1", тогда точно убивает...


 
DVM ©   (2003-11-04 21:00) [5]

Сначала попробуйте закрыть программу по-хорошему, а то после TerminateProcess остается много мусора.



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

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

Наверх




Память: 0.47 MB
Время: 0.025 c
14-12154
Werewolfru
2003-12-12 11:19
2004.01.05
474^343 mod 526


1-11894
snake1977
2003-12-18 12:56
2004.01.05
MDIChild в DLL


1-11848
Xtz
2003-12-20 17:17
2004.01.05
Как узнать реальный размер компанента (для записи в файл)


3-11782
T
2003-12-09 17:24
2004.01.05
Как выделить месяц в запросе?


1-11953
Nimnull
2003-12-19 17:04
2004.01.05
HELP, HELP ошибка с FindComponent