Einzelnen Beitrag anzeigen

Benutzerbild von diabox
diabox

Registriert seit: 13. Sep 2006
61 Beiträge
 
Delphi 2010 Professional
 
#1

exportierte Prozedur aus EXE mit rundll aufrufen

  Alt 15. Okt 2006, 14:38
Ich habe eine ganz normale Win32 Anwendung (.EXE): Aus dieser heraus exportiere ich eine kleine Testprozedur:

Delphi-Quellcode:
procedure Hallo();
begin
 ShowMessage('Hallo Welt');
end;

exports Hallo;
Diese Prozedur möchte ich jetzt gerne direkt starten, ohne dass die Anwendung etwas anderes macht, als diese Funktion auszuführen. Darum dachte ich mir, ich behandle die Anwendung wie eine DLL - also als Modul - und starte die Prozedur so:
Code:
rundll32 test.exe Hallo
Wenn die Prozedur nichts macht, gibt es auch keine Fehler, rundll32 läuft reibungslos ab.
Wenn ich die Prozedur aber mit diesem ShowMessage oder mit einer Funktion, die eine Datei erstellt bestücke, erhalte ich eine Exception von der rundll32 und zwar steht da nicht, wie sonst, wenn mein Code eine Exception verursacht hat: In dem Modul ist eine Ausnahme aufgetreten (o.ä.) sondern:
Zitat:
---------------------------
rundll32.exe - Fehler in Anwendung
---------------------------
Die Anweisung in "0x0042a490" verweist auf Speicher in "0x00000000". Der Vorgang
"written" konnte nicht auf dem Speicher durchgeführt werden.

... [Den Rest kennt ihr ja ^^] ...
Arbeitet die rundll32 nicht mit LoadModule und co. oder was muss ich tun, damit das klappt? Ich möchte dafür keine extra DLL beilegen, weil ich nicht genau weiß ob ich auf dem Datenträger Schreibzugriff habe.

Danke im voraus
Wer zweifelt, detoniert nicht!'
Dieter Nuhr
  Mit Zitat antworten Zitat