Entwickler-Ecke

Windows API - DLL-Programmierung / Aufruf per rundll32.exe


mb - Mo 20.10.03 15:44
Titel: DLL-Programmierung / Aufruf per rundll32.exe
Hallo!

Ich möchte Funktionen aus einer eigenen DLL nicht aus einer Delphi-Anwendung heraus sondern per rundll32.exe aufrufen. Wie geht das? Ich hatte bei meinen Versuchen keinen Erfolg.


bIce - Mo 20.10.03 19:08

Die Funktionen müssen besondere Vorgaben erfüllen um aufgerufen werden zu können.

Delphi-Quelltext
1:
2:
function MyMsg(hwnd: Integer; hinst: Integer; szCmdLine: PChar;
              reserved: Longint): Integer; stdcall;

Die Parameter an die Funktion musst Du über szCmdLine abfragen
laut MS-Knowledgebase [http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q164/7/87.asp&NoWebContent=1] muss der letzte Parameter (reserved:LongInt) nicht vorhanden sein, kommt aber bei mir unter Win98 zu einem Fehler nach dem Aufruf der funktion.
Die Funktion muss noch exportiert werden, damit sie rundll32 finden kann:

Delphi-Quelltext
1:
exports MyMsg;                    

Wenn Du die Funktion aufrufen willst, musst Du zwischen der Dll dem Komma und dem Funktionnamen keinen Leerzeichen angeben.
Bsp:

Quelltext
1:
rundll32 Project2,MyMsg Hallo                    


EDIT: Wobei noch anzumerken ist, dass Du einen beliebigen Funktionsnamen wählen kannst. ;)


mb - Mo 20.10.03 21:00

ok, prima.

vielen dank.