Einzelnen Beitrag anzeigen

EConvertError

Registriert seit: 29. Sep 2003
Ort: Österreich
230 Beiträge
 
#8

Re: "Datenträgerdialog" & Bilder von Datenträg

  Alt 2. Mai 2007, 12:24
Hmmm, danke!

Naja ganz das Wahre scheint deine Lösung nicht zu sein.

Immerhin berichtet der Threadstarter davon:
Zitat:
wenn mein Programm schon gestartet ist, ist alles Ok.
wenn es noch nicht gestartet war, öffnet es sich und am Ende von 'Drop' (kann man mit sleep() verzögern) wird das programm sofort wieder beendet
Das ist definitiv nicht das was wir wollen. Ich will erreichen, dass das Programm, wenn es noch nicht geöffnet ist, gestartet wird (und das auch bleibt).

Es scheint darauf hinauszulaufen, einen COM-Server zu schreiben (Automatisierungsobjekt), der IDropTarget implementiert.

Zitat:
Dort habe ich auf meinen Eintrag geklickt und plötzlich stand in der ListBox jedenfalls das Laufwerk 'E:\', also der Laufwerksbuchstabe des Sticks.
Wenn ich den MSDN-Artikel richtig verstanden habe, sollten wir direkt die Dateinamen erhalten (nicht nur Laufwerksbuchstaben):
Zitat:
If the application registered for IDropTarget, then all the files that were sniffed will be passed to the application through the IDataObject interface.
To extract the names of the files, query the data object for the clipboard format CFSTR_AUTOPLAY_SHELLIDLISTS defined in shlobj.h, or use TEXT("Autoplay Enumerated IDList Array") directly.
Für mich stellt sich also folgende Frage:
Wo implementiere ich IDropTarget? Schreibe ich eine Shellextension, oder baue ich das direkt in meine Anwendung ein? Ich würde zu letzterem tendieren, da ich dann das IDropTarget unter Umständen auch direkt für OLE-Drag & Drop verwenden kann (Näheres dazu wäre toll). Die Frage ist für mich: Wie kann man den OleServer da richtig implementieren. Denn ich würde dieses Interface gern extra in einem Objekt kapseln und nicht so "nebenbei" im TForm "mitimplementieren" (Vor allem, da das anscheinend wie im Zitat ersichtlich Nebenwirkungen hat.).

Wär gut, wenn sich da irgendein OLE/COM-Guru äußern könnte.

Hier macht man das mit einer ShellExtension, wobei allerdings das Drag & Drop nicht berücksichtigt wurde.

Zitat:
Das würde mich übrigens auch interessieren wie du das gemacht hast.
Ich verstehe die Frage nicht ganz. Du hast doch selbst ein Bild angehängt, wo du das schon erledigt hast.

Danke,
Andreas
Andreas N.
  Mit Zitat antworten Zitat