![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Закрытие другой прграммы [D6, NT4, Win2k]
AlekseyK © (2003-02-26 12:00:00)Привет! Подскажите как закрыть любую другую прогу даже если она зависла(типа End Task). Спасибо!
Nic_B (2003-02-26 15:34:00) [1]У меня работает так
GetWindowThreadProcessID(Wnd, @ProcessID);
ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
TerminateProcess(ProcessHandle,4);
А насчет
a:=findwindow(nil,"Имя_проги");
SendMessage(a,WM_CLOSE,0,0);
то некоторые программы выдают запрос перед закрытием т.е. автоматом не закроешь
AlekseyK (2003-02-26 14:40:00) [2]у меня все работает так:
a:=findwindow(nil,"Имя_проги");
SendMessage(a,WM_CLOSE,0,0);
усли это не лучший способ то подскажи как лучше,
как узнать ID процесса и что писать в параметре TerminateProcess(ID,?);
DVM (2003-02-26 14:05:00) [3]
> я так понял должно быть как то так
> a:=findwindow(nil,"Имя_проги");
> TerminateProcess(a,"Здесь_не_знаю_что");
Неправильно ты понял.
Причем здесь findwindow?
Тебе нужен не Handle окна, а ID процесса.
По хэндлу окна тоже можно получить ID процесса, но это лишнее.
AlekseyK (2003-02-26 13:16:00) [4]я так понял должно быть как то так
a:=findwindow(nil,"Имя_проги");
TerminateProcess(a,"Здесь_не_знаю_что");
Как именно?
AlekseyK (2003-02-26 12:19:00) [5]У TerminateProcess(hProcess:Cardinal,uExitCode:Cardinal) в хелпе не нашол что за hProcess и uExitCode Я знаю только нащвание процесса как узнать эти параметры.
han_malign (2003-02-26 12:07:00) [6]TerminateProcess
- но, для 98, я могу смоделировать ситуацию когда программа зависнет намертво и ничем не убьется (TerminateThread в процессе I/O), под W2K убьется любая...