Страница 1 из 1
при закрытие процесса закрыть еще один
Добавлено: 28 авг 2006, 03:49
qwoter
В двух словах не сформулировать...
Вообщем такая ситуация:
как при завершение работы (отключение процесса через Диспетчер задач и тд), завершить работу еще одному приложению...
возможно ли это? Если да, то как это примерно будет выглядеть...
Добавлено: 28 авг 2006, 10:22
Dr_Grizzly
Т.е. у тебя есть твоя программа написанная на дельфе, и ты хочешь, чтоб при закрытии твоей программы, не важно как, т.е. либо это завершение сеанса, либо перезагрузка, либо завершение твоей проги из диспетчера, она потянула за собой закрытие другого приложения?
Тогда гляди следующее:
Код: Выделить всё
...
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;
И закрывай все что душе угодно

Добавлено: 28 авг 2006, 10:28
Dr_Grizzly
А вот еще проще

Без создания всяких процедур
PostMessage(FindWindow(Nil, Pchar(Edit1.text)), WM_QUIT, 0, 0);
Добавлено: 28 авг 2006, 12:09
Blood_Magic
проверь какое событие вызывается при завернении процесса и в нем напиши код завершения другого процесса. Но это не покатит когда ты снимаешь задачу, т.к. никакого события не вызывается.
Добавлено: 28 авг 2006, 12:46
qwoter
спасибо за помощь, то что нужно.
тема исчерпана.