Форум: "Начинающим";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
ВнизКак убить задачу, зная только имя .exe Найти похожие ветки
← →
LoRd1 © (2007-05-19 14:48) [0]Люди помогите плиз с этой нелёгкой (для меня) задачей
полазил по просторам инета нашел много всего интересного но так и не смоз разобратся :(
одно из найденого меня заинтересовало:
{ Эта небольшая функция закрывает приложения, соответствующие заданному имени .exe.
Пример: KillTask("notepad.exe");
KillTask("iexplore.exe"); }
uses
Tlhelp32, Windows, SysUtils;
function 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;
вверху было написано что это пример завершения задачи експлорера (или блокнота) - не важно, в самом коде небыло и малейшего упоменания етих процесов!!
помогите разобратся плз!!
З.Ы. если кто знает способ попроше буду признателен :)
← →
Loginov Dmitry © (2007-05-19 15:14) [1]> З.Ы. если кто знает способ попроше буду признателен :)
procedure TerminateWindowProcess(Window: HWND);
// Завершение процесса, к-рому принадлежит окно Window
var
ProcessId: DWORD;
Process: THandle;
begin
GetWindowThreadProcessId(Window, ProcessId);
Process:= OpenProcess(PROCESS_TERMINATE, False, ProcessId);
if Process <> 0 then
try
TerminateProcess(Process, 0);
finally
CloseHandle(Process);
end;
end;
← →
LoRd1 © (2007-05-19 16:05) [2]В данном примере мне не совсем понятно какой именно ехе-процес был прекращен :(
можно ли написать пример для завершения процеса winamp.exe (ведь вопрос был поставлен так: "как убить задачу, зная только имя .exe??") используя:
procedure TForm1.Button1Click(Sender: TObject)
← →
X9 © (2007-05-19 16:15) [3]> [0] LoRd1 © (19.05.07 14:48)
Что не устраивает в приведённом вами примере?
← →
LoRd1 © (2007-05-19 16:24) [4]1) не пойму куда ввести:
procedure TerminateWindowProcess(Window: HWND)
2) не вижу имя ***.ехе который убибают
3) хотелось бы увидить пример завершения кокого нибуть приложения, не входящего в стандартный комплект Винды. Хотябы тогоже winamp.exe или BORGchat.exe !!
← →
X9 © (2007-05-19 19:06) [5]Вот пример использования вашего же кода:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TlHelp32, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function 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
KillTask(Edit1.Text);
end;
end.
Соответственно, на форме должны присутствовать контролы Edit1 класса TEdit и Button1 класса TButton.
P.S. Рановато вам решать такие задачи, если вы не можете подключить модуль и вызвать готовую подпрограмму. Учите матчасть.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c