hi,
Zitat:
Wie übergibt Explorer.exe die Dateinamen an die
dll?
Dies geschieht über DragQueryFile(). Aber du mußt dir das so vorstellen, das deine
DLL
ein Unterprogramm von "Explorer.exe" ist. Die
DLL laüft immer, wenn auch Explorer.exe läuft.
Schau dir dazu das von Sprint angesprochene Beispiel an.
(Delphi\Demos\
ActiveX\ShellExt\contmenu.dpr)
Zitat:
Und wie bekomme ich die Dateipfade aus der
dll in mein Programm, wenn ich das Programm durch die
dll aufgerufen habe?
-> Die
DLL wird ja vom Explorer aufgerufen
-> der Explorer übergibt die Pfade an die
DLL, sobald du die rechte Maustaste gedrückt hast
-> Deine
DLL kann dann eine Dateiliste erstellen
-> Jetzt gibt es mehrere Möglichkeiten die Liste an dein Programm zu übergeben
-> 1.) Du übergibst die Speicher-Adresse der Liste und sendest sie an dein Programm
2.) oder du sendest die Liste über WM_CopyData an dein Programm (Messages, SendMessage)
PS: Die
DLL startet dann dein Programm und übergibt dann die Liste.
Das Starten des Hauptprogrammes kostet Zeit, daher mußt du solange prüfen bis es gestartet ist.
Den Pfad zur Exe kann man in der Registry abspeichern.