Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.15;
Скачать: CL | DM;

Вниз

Как убить процесс   Найти похожие ветки 

 
vyper   (2006-09-25 18:44) [0]

Народ, а как программно убить процесс? Например по имени процесса (file.exe).


 
DevilDevil ©   (2006-09-25 18:52) [1]

Если знаешь класс и/или текст окна, то можно так:

procedure KillProgram(Classname : string; WindowTitle : string);
var
ProcessHandle : THandle;
ProcessID: Integer;
TheWindow : HWND;
CL, CAP : pchar;
begin

if Length(Classname)   > 0 then CL  := pchar(Classname)   else CL  := nil;
if Length(WindowTitle) > 0 then CAP := pchar(WindowTitle) else CAP := nil;

TheWindow := FindWindow(CL, CAP);
GetWindowThreadProcessID(TheWindow, @ProcessID);
ProcessHandle := OpenProcess($0001, FALSE, ProcessId);
TerminateProcess(ProcessHandle,4);
end;


TButton.OnClick:
begin
KillProgram("TAppBuilder", ""); // закрыть Билдер или Delphi
end;


 
Ega23 ©   (2006-09-25 19:01) [2]


> Если знаешь класс и/или текст окна, то можно так:


Вот только зачастую ты не знаешь ни того ни другого.


 
vyper   (2006-09-25 19:11) [3]

TAppBuilder а если delphi, процесс же delphi32.exe называется


 
Ega23 ©   (2006-09-25 19:13) [4]


> TAppBuilder а если delphi, процесс же delphi32.exe называется


Процесс и окошко - разные весчи.


 
DevilDevil ©   (2006-09-25 19:26) [5]

> Ega23 ©   (25.09.06 19:01) [2]
> Вот только зачастую ты не знаешь ни того ни другого.


Если хочешь закрывать какое-то определённое приложение, то оба (или один) параметра можно отследить:

function EnumWindowsProc(W : HWND; lParam : integer) : BOOL; stdcall;
var
 Cap, Cl : array[0..255] of char;
begin
 GetWindowText(W, Cap, 255);
 GetClassName(W, Cl, 255);
 Form1.Memo1.Lines.Add("Class = ""+Cl+""; Caption = ""+Cap+"";");
 Result := true;
end;


TButton.OnClick:
begin
EnumWindows(@EnumWindowsProc, 0);
end;


 
vyper   (2006-09-25 19:27) [6]

собственно хочу убить delphi32.exe как это сделать?


 
Ega23 ©   (2006-09-25 19:28) [7]


> Если хочешь закрывать какое-то определённое приложение,
> то оба (или один) параметра можно отследить:
>


1. Консольные приложения?
2. Просто сервисы?


 
Gydvin ©   (2006-09-25 19:55) [8]

Спер

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, TlHelp32;

type
 TForm1 = class(TForm)
   Button1: TButton;
   function KillTask(ExeFileName: string): integer;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.KillTask(ExeFileName: string): integer;
const
 PROCESS_TERMINATE = $0001;
var
 ContinueLoop: BOOL;
 FSnapshotHandle: THandle;
 FProcessEntry32: TProcessEntry32;
begin
 result := 0;

 FSnapshotHandle := CreateToolhelp32Snapshot
   (TH32CS_SNAPPROCESS, 0);
 FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
 ContinueLoop := Process32First(FSnapshotHandle,
   FProcessEntry32);

 while integer(ContinueLoop) <> 0 do
 begin
   if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
     UpperCase(ExeFileName))
     or (UpperCase(FProcessEntry32.szExeFile) =
     UpperCase(ExeFileName))) then
     Result := Integer(TerminateProcess(OpenProcess(
       PROCESS_TERMINATE, BOOL(0),
       FProcessEntry32.th32ProcessID), 0));
   ContinueLoop := Process32Next(FSnapshotHandle,
     FProcessEntry32);
 end;

 CloseHandle(FSnapshotHandle);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 case KillTask("opera.exe") of
   0: Showmessage("Мимо");
   1: Showmessage("Крантык");
 end;
end;

end.


 
vyper   (2006-09-25 20:47) [9]

именно то...
собественно убиваю сетевой чат )


 
Leonid Troyanovsky ©   (2006-09-25 22:17) [10]


> vyper   (25.09.06 20:47) [9]

> собественно убиваю сетевой чат )


Убиение сетевых чатов не многим более грешно,
чем даже убивство локальных.

--
Regards, LVT.


 
Германн ©   (2006-09-26 01:11) [11]


> vyper   (25.09.06 18:44)
>
> Народ, а как программно убить процесс? Например по имени
> процесса (file.exe).

Да чё ж вас всех так зациклило на "убийствах"?


 
ASoft   (2006-09-26 06:03) [12]


> vyper   (25.09.06 19:27) [6]
>
> собственно хочу убить delphi32.exe...

дожили...


 
KLAUS ©   (2006-09-26 06:41) [13]

Ну а если я имя сменю......типа opera1.exe


 
Gydvin ©   (2006-09-26 07:26) [14]


> Ну а если я имя сменю......типа opera1.exe


ТО


>   0: Showmessage("Мимо");



Страницы: 1 вся ветка

Текущий архив: 2006.10.15;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.04 c
2-1159451950
шаааа
2006-09-28 17:59
2006.10.15
TObject(Sender) / Sender


1-1157551934
Krants
2006-09-06 18:12
2006.10.15
"Freeze Panes" Exel


15-1158834648
kroner
2006-09-21 14:30
2006.10.15
Работа с большими числами


2-1159370928
valery779
2006-09-27 19:28
2006.10.15
Фото и Word


2-1159388288
KidMan
2006-09-28 00:18
2006.10.15
Как сделать, чтобы к письму прикреплялся файл