Laden...

Drag n Drop ohne gestartete Zielanwendung durchführen (Dateien aufs Icon der Zielanwendung ziehen)

Erstellt von Heinzi2.5 vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.675 Views
H
Heinzi2.5 Themenstarter:in
12 Beiträge seit 2014
vor 9 Jahren
Drag n Drop ohne gestartete Zielanwendung durchführen (Dateien aufs Icon der Zielanwendung ziehen)

Hallo liebe Gemeinde,

in meiner Forms-basierten Anwendung möchte ich es gern einrichten, dass ein Drag and Drop zu verarbeitender Dateien auch auf das Icon der Zielanwendung erfolgen kann, ohne dass die Anwendung also vorher geöffnet werden muss. Auf diese Weise hoffe ich, dass eine Datei dann auch per SendTo an die betr. Anwendung geschickt werden kann.

Ich komme da leider nicht recht weiter, & die Beispiele sowohl in der zahlreichen Literatur wie in der VS-Dokumentation beziehen sich allesamt immer nur auf dieselben Szenarien bereits laufender Zielanwendungen.

Hat jemand eine Idee, oder weiss jemand eine Quelle, die in etwas umfassenderer Weise Aufschluss über die Vorgehensweisen bei der Implementierung Forms-basierten D&Ds gibt?

Danke für Eure Tips

H2.5

16.842 Beiträge seit 2008
vor 9 Jahren

Wie soll das gehen? Die empfangende Anwendung braucht dafür ja einen registrierten Event, dass sie das Droppen überhaupt verarbeiten kann.

Vermutlich sprichst Du von Desktop-Icons.
Das heisst, dass das Feature der Explorer unterstützen müsste - das bezweifle ich.

Welche Anwendung soll das können?

H
Heinzi2.5 Themenstarter:in
12 Beiträge seit 2014
vor 9 Jahren

Hallo Abt,

danke für Deine Rückmeldung. Um Deine Frage zu beantworten, hätte ich aktuell drei Beispiele.
Die eine Anwendung, wo es (gerade nochmal ausprobiert) funktioniert, eine Datei auf das Anwedungsicon zu ziehen und damit die Anwendung zu starten bzw. die Datei anzeigen zu lassen, ist Word (vmtl. analog die anderen Office-Anw.) die zweite bspw. der Foxit-Reader für PDFs oder auch ein Uralt-Firefox für Htm-Dateien(& dito mit »Senden an«) .

Es scheint sich aber um einen komplizierteren Ablauf zu handeln, das verrät mir Deine Reaktion ja auf jeden Fall. Wirklich marvellous, und ohne dass auch ich eine Idee hätte - aber irgendwie scheint das gehen zu müssen.

Viele Grüsse Heinzi

R
317 Beiträge seit 2006
vor 9 Jahren

Hallo,

wenn ich das ganze jetzt richtig verstehe, müssten doch die Befehlszeilenargumente das richtige sein, was du suchst?

Wenn du eine Datei auf das Desktop-Icon deiner Applikation ziehst, wird normalerweise die Anwendung gestartet, und die Datei als Befehlszeilenargument übergeben, oder irre ich mich da?

Grüße,
Daniel

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo zusammen,

korrekt, die Dateipfade werden als Kommandozeilenargumente übergeben, vorausgesetzt natürlich man trifft das Icon der Zielanwendung und lässt die Dateien nicht daneben fallen. Richtig ist, dass der Windows Explorer das eigentliche Drag&Drop Ziel ist, er die Drag&Drop-Aktion und -Daten entgegen nimmt und dann - quasi nach Abschluss der Drag&Drop-Aktion - per Kommandozeilenargumente an die von ihm gestartete Anwendung weitergibt. Die Anwendung selbst kann also nicht erkennen, ob es sich um Drag&Drop, SendTo oder um Argumente aus einer Verknüpfung oder aus der Kommandozeile handelt.

Wenn mehrere Dateien gezogen werden, werden alle deren Pfade auf einmal an eine einzige Instanz der Anwendung übergeben (args[0], args[1], args[2], ...). Wenn man aber mehrmals hintereinander Dateien auf das Icon zieht, wird immer eine neue Instanz erzeugt. Wenn man das nicht will, kann man [FAQ] mehrere Programminstanzen verhindern (inkl. Parameterübergabe).

Wenn man Dateien auf ein Icon in der Schnellstartleiste zieht, wird die Anwendung allerdings nicht gestartet, sondern die Dateien werden an das Icon angeheftet. Die angehefteten Dateien sieht man, wenn man anschließend mit der rechten Maustaste auf das Icon der Zielanwendung klickt. Erst wenn man auf eine angeheftete Datei klickt, wird die Anwendung mit dieser Datei gestartet.

herbivore