Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.047 c
2-1159647975
Ezorcist
2006-10-01 00:26
2006.10.15
ИИ для логической игры.


2-1159277739
Inna_Z
2006-09-26 17:35
2006.10.15
События MouseDown и MouseUp.


15-1158929841
StriderMan
2006-09-22 16:57
2006.10.15
Куда попадают объекты после деструктора?


4-1147513821
parovoZZ
2006-05-13 13:50
2006.10.15
Криво работает окно в dll при вызове из VCL exe


2-1159690837
vain
2006-10-01 12:20
2006.10.15
PNG





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский