Завершаем работу процесса.

Написав довольно много уроков по администрированию я не уделил должного внимания работе с процессами. Так что, встречайте урок по завершению произвольного процесса.
Сначала давайте подключим библиотеку  Tlhelp32. 
Затем нам понадобится вот такая функция:


procedure KillProcess(hWindowHandle: HWND); 
var 
  hprocessID: INTEGER; 
  processHandle: THandle; 
  DWResult: DWORD; 
begin 
  SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0, 
    SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult); 
  if isWindow(hWindowHandle) then 
  begin 
    { Get the process identifier for the window} 
    GetWindowThreadProcessID(hWindowHandle, @hprocessID); 
    if hprocessID <> 0 then 
    begin 
      { Get the process handle } 
      processHandle := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION, 
        False, hprocessID); 
      if processHandle <> 0 then 
      begin 
        { Terminate the process } 
        TerminateProcess(processHandle, 0); 
        CloseHandle(ProcessHandle); 
      end; 
    end; 
  end; 
end;


Так как в параметре к функции идет указатель на окно, поэтому используем FindWindow.
Впрочем, смотрим пример:

procedure TForm1.Button2Click(Sender: TObject); 
begin 
  KillProcess(FindWindow('Project1',nil)); 
end;


На этом всё, заходите ко мне каждый день и конечно
Удачи!
________________________


Расслабиться пора!
Короткое видео о том, что лучше не делать, но очень сложно избежать:D


Комментарии

Популярные сообщения из этого блога

Delphi: Создаем простейшую 2D игру