![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Закрытие процесса [D7, WinXP]
Alex870 © (2005-06-21 13:46:00)Подскажите пожалуйста, можно ли перехватить закрытие процесса моего приложения, выполнить какие-либо действия, а потом завершить процесс. Приложение у меня без формы:
program MyProg;
uses
Windows, messages;
var
M : tagMSG;
begin
while GetMessage( M, HInstance, 0, 0) do
begin
TranslateMessage(M);
DispatchMessage(M);
end;
end.
Если нет, подскажите, может создание формы поможет? Спасибо
Игорь Шевченко (2005-06-21 15:41:00) [81]MS-REM (21.06.05 15:32) [9]
Эта...долго читал, нифига не понял, где там слово "подмена ID процесса на 0 или меньше нуля"...А главное, зачем эта подмена нужна.
"Народ требует разъяснений"
kaZaNoVa (2005-06-21 15:33:00) [82]MS-REM (21.06.05 15:16) [6]
ID процесса не может быть равно 0 .. возможно Вы намекаете на "подмену" ID ? имхо это неприемлимо в норимальных задачах :)
MS-REM (2005-06-21 15:32:00) [83]Игорь Шевченко © (21.06.05 15:18) [7]
С этого места подробнее, про секретный прибор,
о котором не знали физики.
http://wasm.ru/article.php?article=apihook_3
Причем здесь физики.
Alex870 (2005-06-21 15:24:00) [84]
> MS-REM
> Если ID процесса перевести в нуль или ниже нуля.
Не могли бы пояснить, что значит ID процесса перевести в нуль, и что это даст.
> kaZaNoVa © (21.06.05 14:58) [5]
Мысль хорошая, но как запасной вариант, если не найду, как реализовать в одном приложении, однако большое спасибо!
Игорь Шевченко (2005-06-21 15:18:00) [85]MS-REM (21.06.05 15:16) [6]
> Если ID процесса перевести в нуль или ниже нуля.
С этого места подробнее, про секретный прибор, о котором не знали физики.
MS-REM (2005-06-21 15:16:00) [86]Есть решение.
Если ID процесса перевести в нуль или ниже нуля.
kaZaNoVa (2005-06-21 14:58:00) [87]Удалено модератором
Примечание: Offtopic
Alex870 (2005-06-21 14:14:00) [88]Окно создать не проблема, если это нужно для решения данной задачи, только оно должно быть невидимым. Я написал так
program ati2evxx;
uses
Windows, messages;
var
M : tagMSG;
wc : WndClass;
wndMain : HWND;
function WindowProc(wnd:HWND;Msg:UINT;wParam:WPARAM;lParam:LPARAM):LRESULT; stdcall;
begin
case msg of
WM_CLOSE : beep(100,100);
WM_DESTROY :
begin
postquitmessage(0);
Result:=0;
exit;
end; else Result:=DefWindowProc(wnd,msg,wParam,lParam);
end;
end;
begin
wc.style:=CS_HREDRAW or CS_VREDRAW;
wc.lpfnWndProc:=@WindowProc;
wc.cbClsExtra:=0;
wc.cbWndExtra:=0;
wc.hInstance:=HInstance;
wc.hIcon:=LoadIcon(0,IDI_APPLICATION);
wc.hCursor:=LoadCursor(0,IDC_ARROW);
wc.hbrBackground:=COLOR_BTNFACE+1;
wc.lpszMenuName:=nil;
wc.lpszClassName:='Main';
RegisterClass(wc);
wndMain:=CreateWindow('Main','',ws_overlappedwindow,10,10,100,100,0,0,hInstance,nil);
while GetMessage( M, 0, 0, 0) do
begin
TranslateMessage(M);
DispatchMessage(M);
end;
end.
Но результатов (положительных) не получил.
Игорь Шевченко (2005-06-21 14:01:00) [89]
> можно ли перехватить закрытие процесса моего приложения,
> выполнить какие-либо действия, а потом завершить процесс
Если приложение с окном, то Task Manager при снятии приложения посылает окну WM_CLOSE, иначе никак.
kaZaNoVa (2005-06-21 13:52:00) [90]хотя .. я не понял, он у тя с окном?
kaZaNoVa (2005-06-21 13:51:00) [91]если закрывают методом TerminateProcess или внедрением + Halt() то никак:(