![]() |
Re: DragOver vom Explorer erkennen
Liste der Anhänge anzeigen (Anzahl: 1)
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:
Ich denke ich hänge die Unit einfach mal an, vielleicht hat das Verhalten ja auch etwas mit meinen Änderungen zu tun.
MK_ALT = 32;
FILE_ATTRIBUTE_DEVICE = $00000040; PathDelim = '\'; |
Re: DragOver vom Explorer erkennen
Liste der Anhänge anzeigen (Anzahl: 1)
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 |
Re: DragOver vom Explorer erkennen
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] |
Re: DragOver vom Explorer erkennen
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ich habe jetzt die Komponente nochmals überarbeitet. Getestet habe ich:
Gruß xaromz |
Re: DragOver vom Explorer erkennen
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 . |
Re: DragOver vom Explorer erkennen
Hallo,
Zitat:
Gruß xaromz |
Re: DragOver vom Explorer erkennen
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). |
Re: DragOver vom Explorer erkennen
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 |
Re: DragOver vom Explorer erkennen
Kann es sein, dass es sich beim Problem mit dem dropen ganzer Emails aus Thunderbird oder Outlook um ein ähnliches Problem handelt?
|
Re: DragOver vom Explorer erkennen
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.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz