Главная страница
    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.041 c
1-1157193722
samael6
2006-09-02 14:42
2006.10.15
Работа с XMPP (Extensible Messaging and Presence Protocol)


5-1139388585
Perfect
2006-02-08 11:49
2006.10.15
TPersisten массив свойств и вызов методов хозяина


1-1157564587
Calibr
2006-09-06 21:43
2006.10.15
Как программно записать ipConfig в файл


4-1149099745
Корешь
2006-05-31 22:22
2006.10.15
EnumPorts странно работает


3-1156101812
Lexander
2006-08-20 23:23
2006.10.15
Ошибка "Запись удалена" (Access)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский