Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 11
Модератор форума: stalker, Admin 
Форум » Все о Delphi » Операционная система и железо » Завершить процесс без taskkill
Завершить процесс без taskkill
skycarДата: Понедельник, 01.06.2009, 21:37 | Сообщение # 1
Ранг 6
Группа: Проверенные
Сообщений: 116
Награды: 5
Репутация: 31
Статус: Offline
Привет всем! У меня вопрос, как можно завершить процесс без помощи команды taskkill? Для этого есть WinAPI-функция TerminateProcess(), но оба параметра там - целые числа. Как можно её использовать для завершения процесса? Заранее спасибо. smile
 
AdminДата: Понедельник, 01.06.2009, 22:59 | Сообщение # 2
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Code
TerminateProcess(
   HANDLE hProcess,    // Указатель процесса
   UINT uExitCode    // Код возврата процесса
);

Code
function TerminateTask(PID: integer): integer;
var
    ph: integer;
    lpExitCode: Cardinal;
begin
    ph := OpenProcess(PROCESS_ALL_ACCESS, true, pid);
    GetExitCodeProcess(ph, lpExitCode);

    TerminateProcess(ph, lpExitCode);
    CloseHandle(ph);
end;

В качестве параметра в функцию подаешь ID процесса. Можешь его узнать его в Диспетчере задач, единственное, что каждый раз идентификатор у процесса разный. Так что нужно еще узнавать его.

Можно зная заголовок окна, таким образом:

Quote
function TakeProcessID(WindowTitle: string): Integer;
var
WH: THandle;
begin
result := 0;
WH := FindWindow(nil, pchar(WindowTitle));
if WH <> 0 then
GetWindowThreadProcessID(WH, @Result);
end;

Это еще можеш посмотреть: /publ/30-1-0-140

И встречный вопрос, нужно именно убить процесс или завершить? Просто можно послать обычное сообщение окну на закрытие, и все.


Не оказываю помощь через личные сообщения и ICQ
 
skycarДата: Вторник, 02.06.2009, 04:06 | Сообщение # 3
Ранг 6
Группа: Проверенные
Сообщений: 116
Награды: 5
Репутация: 31
Статус: Offline
Спасибо за ответ, попробую smile
Quote (Admin)
И встречный вопрос, нужно именно убить процесс или завершить? Просто можно послать обычное сообщение окну на закрытие, и все.

Это тоже хороший вариант
 
Форум » Все о Delphi » Операционная система и железо » Завершить процесс без taskkill
Страница 1 из 11
Поиск:

Copyright DelphiDevelop.ru © 2008-2018
Хостинг от uCoz