Hallo, ich möchte eine
DLL schreiben, die checkt ob ein Programm läuft! Ergebnisse sollen folgende sein:
0 - Programm läuft nicht
1 - Programm läuft
2 - kein Parameter empfangen
Nur, falls es von Interesse ist: Die
Dll soll für NSIS sein! Wenn ich sie so, wie sie jetzt ist einbinde liefert sie nur den parameter zurück, den ich an sie übergebe!
Was ist falsch an meinem Quelltext?
Delphi-Quellcode:
library Process;
uses
ShareMem,
Windows,
SysUtils,
Classes,
TLHelp32;
{$R *.RES}
function CheckProcess(exe: PChar): Integer;
var
hSnap: THandle;
ProcEntry: TProcessEntry32;
s: String;
sl : TStringList;
i : Integer;
begin
if exe <> '' then
begin
hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnap <> INVALID_HANDLE_VALUE) then
begin
sl := TStringList.Create;
ProcEntry.dwSize := SizeOf(ProcessEntry32);
if (Process32First(hSnap, ProcEntry)) then
begin
s := ProcEntry.szExeFile;
sl.Add(UPPERCASE(ExtractFileName(s)));
while Process32Next(hSnap, ProcEntry) do
begin
s := ProcEntry.szExeFile;
sl.Add(UPPERCASE(ExtractFileName(s)));
end;
end;
end;
for i:=0 to sl.Count-1 do
if UPPERCASE(exe) = UPPERCASE(sl.Strings[i]) then
Result := 1
else
Result := 0;
CloseHandle(hSnap);
sl.free;
end
else
Result := 2;
end;
exports
CheckProcess;
begin
end.
Vielen Dank für eure Hilfe im voraus!
Delphi-Coder