Problem przy zabijaniu programu

0

Na 4p jest opisany system zabiania aplikacji znając jej ścieżkę, Cały unit wygląda tak:

unit Delphi;

interface

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

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

var
Form1: TForm1;
PHandle : THandle;
FHandle: THandle;
Process : TProcessEntry32;
Done : Boolean;
Next: Boolean;
EXE : String; // ścieżka programu

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
EXE := 'C:\Program Files\Norton AntiVirus\Navw32.exe';
FHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
Process.dwSize := Sizeof(Process);
Next := Process32First(FHandle,Process);
while Next do
begin{ jesli sciezka dostepu sie zgadza }
if AnsiLowerCase(Process.szExeFile) = AnsiLowerCase(EXE) then
begin
PHandle:=OpenProcess(PROCESS_TERMINATE, False,
Process.th32ProcessID);
{ to probujemy zabic aplikacje }
Done := TerminateProcess(PHandle,0);
if not Done then
MessageBox(Handle, 'Błąd', 'Błąd', MB_OK);
end;
Next := Process32Next(FHandle,Process);
end;
CloseHandle(FHandle);

end;

end.

I nie wiem czemu zaznacza mi linijke:
Next := Process32First(FHandle,Process);
i pisze komunikat:
Build
[Error] Delphi.pas(38): Left side cannot be assigned to
[Error] Delphi.pas(39): Type of expression must be BOOLEAN
[Error] Delphi.pas(50): Left side cannot be assigned to
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Delphi.pas'

Za pomoc z góry dziękuje.

0

ja dalej proponuje

uses TLHelp32;

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;

wystarczy tylko wpisac

killtask(nazwa.exe); i po klopocie :>

0

No twoja procedurka też działa ale może znasz bardziej skuteczniejszą ?? Nie ukrywa chciałęm nią zabić Norton AntyVirus 2003 no i ofcorse nici :)

0

hehe widocznie nav2k3 ma jeszcze inne exeki ktore sa wlaczone i one zatrzymuja proces zabicia, w takim przypadku :P hmmm sam nie wiem mi zabija nav2k =]

1 użytkowników online, w tym zalogowanych: 0, gości: 1