Форум: "Начинающим";
Текущий архив: 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