при закрытие процесса закрыть еще один

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
qwoter
Сообщения: 3
Зарегистрирован: 28 авг 2006, 03:41

В двух словах не сформулировать...
Вообщем такая ситуация:
как при завершение работы (отключение процесса через Диспетчер задач и тд), завершить работу еще одному приложению...
возможно ли это? Если да, то как это примерно будет выглядеть...
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Т.е. у тебя есть твоя программа написанная на дельфе, и ты хочешь, чтоб при закрытии твоей программы, не важно как, т.е. либо это завершение сеанса, либо перезагрузка, либо завершение твоей проги из диспетчера, она потянула за собой закрытие другого приложения?
Тогда гляди следующее:

Код: Выделить всё

...
implementation
...
procedure KillProgram(ClassName: PChar; WindowTitle: PChar);
const
PROCESS_TERMINATE = $0001;
var
ProcessHandle : THandle;
ProcessID: Integer;
TheWindow : HWND;
begin
TheWindow := FindWindow(Classname, WindowTitle);
GetWindowThreadProcessID(TheWindow, @ProcessID);
ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
TerminateProcess(ProcessHandle,4);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
KillProgram(nil,PChar('<Название заголовка окна>'));

//Пример - KillProgram(nil,PChar('Калькулятор'));

end;
А можешь поэкcперементировать, брось на форму Edit1 и кнопку, на кнопку напиши следующее

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
begin
KillProgram(nil,PChar(Edit1.text));
end;
И закрывай все что душе угодно :)
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

А вот еще проще ;) Без создания всяких процедур ;)

PostMessage(FindWindow(Nil, Pchar(Edit1.text)), WM_QUIT, 0, 0);
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Blood_Magic
Сообщения: 273
Зарегистрирован: 30 июн 2005, 14:53

проверь какое событие вызывается при завернении процесса и в нем напиши код завершения другого процесса. Но это не покатит когда ты снимаешь задачу, т.к. никакого события не вызывается.
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
qwoter
Сообщения: 3
Зарегистрирован: 28 авг 2006, 03:41

спасибо за помощь, то что нужно.
тема исчерпана.
Ответить