![]() |
DLL schreiben - Was mach ich falsch?
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:
Vielen Dank für eure Hilfe im voraus!
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. Delphi-Coder |
Re: DLL schreiben - Was mach ich falsch?
hallo delphi_coder,
es fehlt die aufrufkonvention siehe: Zitat:
|
Re: DLL schreiben - Was mach ich falsch?
Danke für die Antwort! Mit stdcall und safecall hat es gar nicht funktioniert und wenn ich es mit register bzw. cdecl versuche liefert er mir wieder nur den übergebenen Parameter! Bin am verzweifeln! Was mach ich nur falsch?
|
Re: DLL schreiben - Was mach ich falsch?
Zitat:
Delphi-Quellcode:
Das Ergebnis wird dann auf dem NSIS-Stack zurückgegeben.
procedure Foo(const Parent: HWND; const StringSize: LongInt; const Variables: PAnsiChar; const StackTop: Pointer); cdecl;
Sieh Dir am besten das Beispiel unter {$NSIS}/Contrib/ExDLL/ an. |
Re: DLL schreiben - Was mach ich falsch?
Ok! Und wie kann ich jetzt die übergebene Variable vom Typ VarConstants mit einem String vergleichen?
|
Re: DLL schreiben - Was mach ich falsch?
[OT]Nur mal ne Frage am Rande: was ist NSIS?[/OT]
|
Re: DLL schreiben - Was mach ich falsch?
|
Re: DLL schreiben - Was mach ich falsch?
Zitat:
Delphi-Quellcode:
Je nach dem wie die Parameter vom NSIS-Skript (Push/$x) übergeben werden.
if GetUserVariable(INST_x) = 'foo' then
// bzw. if PopString() = 'bar' then |
Re: DLL schreiben - Was mach ich falsch?
Vielen Dank für die Hilfe! Es läuft jetzt! Ich hatte in der for-Schleife noch einen kleinen Fehler drin! :-)
Viele Grüße Delphi-Coder |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz