AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DragOver vom Explorer erkennen

Ein Thema von Guido Eisenbeis · begonnen am 28. Okt 2006 · letzter Beitrag vom 13. Mär 2017
Antwort Antwort
Seite 5 von 7   « Erste     345 67      
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#41

Re: DragOver vom Explorer erkennen

  Alt 21. Sep 2007, 11:41
Hallo Xaromz,

tut mir leid für die sehr späte Rückmeldung.

Leider ist die jetztige neue Version für mich eher ein Rückschritt. Jetzt kann ich auch keine Anhänge aus Thunderbird mehr droppen, die von Outlook (version 2000) gehen nach wie vor nicht.

Ich habe ein Panel als DropControl in der ShellDropper Komponente registriert. Leider kommt nur noch das Drop-Verbotsschild, wenn ich einen Anhang einer Email aus Thunderbird oder Outlook dort droppen möchte.

Wenn ich das DragOver Event implementiere und dort Accept auf true setze kommt er wohl in das Drop-Event, aber FilesW und Files Eigenschaften sind jeweils leer. Auch kein Filetype ist gesetzt.

Das hat zumindest in der vorherigen Version funktioniert.

Ich musste in der Unit allerdings einige Änderungen vornehmen um sie lauffähig zu bekommen. Delphi5 hat leider keine WideStrings Unit und kennt damit auch keine TWideStringList, WideString oder TWideStrings. Ich habe daher die WideStrings Unit entfernt und aus TWideStrings TStrings, aus WideString String und aus TWideStringList TStringList gemacht.

Desweiteren war es notwendigt folgende Konstanten zu definieren, da sie meiner Delphi Version (5) unbekannt waren.

Delphi-Quellcode:
 MK_ALT = 32;
 FILE_ATTRIBUTE_DEVICE = $00000040;
 PathDelim = '\';
Ich denke ich hänge die Unit einfach mal an, vielleicht hat das Verhalten ja auch etwas mit meinen Änderungen zu tun.
Angehängte Dateien
Dateityp: pas shelldropper_120.pas (20,7 KB, 16x aufgerufen)
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#42

Re: DragOver vom Explorer erkennen

  Alt 21. Sep 2007, 21:08
Hallo,

wenn Du einfach jeden WideString durch einen AnsiString ersetzt, dann kann das ja nicht funktionieren; Du musst natürlich die API-Aufrufe auch anpassen. Im Anhang findest Du eine Version, die abhängig vom Compiler die WideStrings einbindet (ab Delphi 7) oder eben nicht. Schau doch mal, ob das hilft.

Gruß
xaromz
Angehängte Dateien
Dateityp: zip shelldropper_837.zip (8,7 KB, 27x aufgerufen)
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#43

Re: DragOver vom Explorer erkennen

  Alt 21. Sep 2007, 23:24
Jetzt kann die Komponente mit Attachements aus Outlook umgehen, das funktioniert jetzt, Anhänge aus Thunderbird gehen aber leider nicht in dieser Version.

Diese Version ließ sich auch gut in Delphi5 einbinden.


[Nachtrag]
Ich habe es jetzt auch mit Turbo Delphi probiert, da funktioniert es leider weder aus Thunderbird noch aus Outlook...
[/Nachtrag]
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#44

Re: DragOver vom Explorer erkennen

  Alt 22. Sep 2007, 12:03
Hallo,

ich habe jetzt die Komponente nochmals überarbeitet.
Getestet habe ich:
  • Drag aus der Shell (Explorer) -> funktioniert
  • Drag einer URL aus Internet Explorer -> funktioniert
  • Drag einer URL aus Firefox -> funktioniert
  • Drag einer URL aus Opera -> funktioniert nicht
  • Drag einer Mail aus Windows Mail -> funktioniert
  • Drag eines Anhangs aus Windows Mail -> funktioniert
  • Drag einer Mail aus Outlook (2007) -> funktioniert nicht
  • Drag eines Anhangs aus Outlook (2007) -> funktioniert
  • Drag einer Mail aus Thunderbird (2.0.0.6) -> funktioniert nicht
  • Drag eines Anhangs aus Thunderbird (2.0.0.6) -> funktioniert
Im Anhang ist auch ein Demo-Programm inklusive Quelltext.

Gruß
xaromz
Angehängte Dateien
Dateityp: zip dragdrop_demo_751.zip (225,7 KB, 92x aufgerufen)
Dateityp: zip shelldropper_346.zip (8,9 KB, 95x aufgerufen)
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#45

Re: DragOver vom Explorer erkennen

  Alt 24. Sep 2007, 12:26
Hallo,

das Droppen von Anhängen aus Outlook funktioniert jetzt auch, nur wenn man das gleich mit Thunderbird probiert, gibt es jetzt das Problem, dass zwar das File erstellt wird. Das ist auch gut so, nur leider findet das nach dem Drop-Ereignis statt, so dass man im Drop-Event nicht auf das File zugreifen kann. Dies ist anscheinend aber nur bei Thunderbird Anhängen der Fall .
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#46

Re: DragOver vom Explorer erkennen

  Alt 24. Sep 2007, 13:21
Hallo,
Zitat von GuenterS:
Das ist auch gut so, nur leider findet das nach dem Drop-Ereignis statt, so dass man im Drop-Event nicht auf das File zugreifen kann. Dies ist anscheinend aber nur bei Thunderbird Anhängen der Fall .
Setz doch mal einen Breakpoint in der Methode "ProcessFileGroup" und schau, was passiert. In dieser Methode werden nämlich die temporären Dateien erstellt, und zwar unmittelber, bevor das Ereignis "OnDrop" ausgelöst wird.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#47

Re: DragOver vom Explorer erkennen

  Alt 24. Sep 2007, 17:59
Hallo,

das mit dem Breakpoint habe ich gemacht und nun ist auch "klar" warum es bei Thunderbird Anhängen nicht funktioniert. Wenn ich einen Anhang aus Thunderbird droppe, kommt er nämlich gar nicht in die Methode "ProcessFileGroup".

Beim Auslösen des Drop-Events besteht das File, allerdings ist dieses noch offen und leer, und kann deshalb im Drop-Event nicht geöffnet werden. Läßt man das Programm weiterlaufen (wenn man nur den Dateinamen abfragt), kommt er zwar auch nicht in die Methode "ProcessFileGroup" aber die Datei existiert dann (mit Inhalt).
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#48

Re: DragOver vom Explorer erkennen

  Alt 24. Sep 2007, 18:51
Hallo,

ich habe jetzt nochmal Thunderbird installiert, und habe folgende Beobachtung gemacht: Thunderbird verwendet den Standard-Weg für das Droppen von Dateien, verhält sich also so wie die Shell. Deshalb kommt auch kein ProcessFileGroup (der andere Weg). Leider erstellt aber Thunderbird den Inhalt der gedroppted Datei erst, wenn die Drop-Aktion komplett abgeschlossen ist, also, nachdem die Anwendung das Ereignis verarbeitet hat und der Handler in Thunderbird zurückgekehrt ist; das heißt, die Datei wird erst komplett sein, kurz nachdem sie gedroppt wurde. Das ist bei einer Kopieraktion in der Shell unwichtig, aber für die Verarbeitung in einem anderen Programm wirklich dämlich.
Ich fürchte, mit diesem Timing wirst Du selbst zurechtkommen müssen.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#49

Re: DragOver vom Explorer erkennen

  Alt 24. Sep 2007, 19:41
Kann es sein, dass es sich beim Problem mit dem dropen ganzer Emails aus Thunderbird oder Outlook um ein ähnliches Problem handelt?
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#50

Re: DragOver vom Explorer erkennen

  Alt 24. Sep 2007, 19:59
Ich würde dieses Verhalten von Thunderbird mal als Bug in deren Bugtracker einstellen. Parallel dazu könnte man für solche Fälle einen Workerthread starten der 1-2 Sekunden lang in Intervallen versucht, auf die Datei zuzugreifen, bis er entweder in sein Timeout (drag&drop fehlgeschlagen) läuft oder halt Erfolg hat Ist natuerlich ne ziemliche Krüppellösung aber funktioniert erstmal.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 7   « Erste     345 67      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz