Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Windows copy und D&D (https://www.delphipraxis.net/167025-windows-copy-und-d-d.html)

Mattze 9. Mär 2012 18:11

Windows copy und D&D
 
Hallo,

ich weiß nicht, wo es hinpasst. Probieren wir es hier...

Wenn ich im Windows Explorer per D&D Dateien oder Ordner kopiere, so wir (wahrscheinlich) für jeden Copyvorgang ein eigener Thread gestartet (oder eine eigene Instanz des Explorers aufgemacht), der das abwickelt. Man kann dann im Explorer weiter arbeiten und sogar noch weitere Copy-Aufträge auslösen.

Ich habe mir aber meinen eigenen "Explorer" programmiert. Der gefällt mir einfach besser...
Und der kann das nicht unter Win 7.
Unter XP ging das noch ohne Probleme.

Nun geht es bei Drag & Drop nicht und es geht auch beim Direktaufruf von ShFileOperation nicht.
Kopieren tut er ordentlich, aber eben nicht im Hintergrund. Mit dem Programm kann man erst weitermachen, wenn er fertig ist.


Wie macht man das ordentlich?

Gruß
Mattze

Luckie 9. Mär 2012 23:26

AW: Windows copy und D&D
 
In dem du den Kopiervorgang in einen Thread auslagerst. Hast du doch schon selbst gesagt.

Mattze 10. Mär 2012 06:58

AW: Windows copy und D&D
 
Hallo Luckie,

das habe ich vermutet. Geschrieben habe ich ihn schon, getestet noch nicht, weil bei mir inzwischen die Frage aufgetaucht ist, wie ich das bei Drag & Drop hinkriegen soll.
Beim eigenen Anstoß über Tastatur ist das klar und kein Problem, aber:
Ich nutze VirtualExplorerTreeview und VirtualExplorerEasyListview und da ist das D&D schon drin.
Wie da? Muss ich bei denen an die Quelle und D&D vollständig neu selber implementieren. Das wollte ich eigentlich vermeiden.
(Ob ich dazu schlau genug bin?)

Nebenbei: Da muss dann auch eine ganze Threadverwaltung (wahrscheinlich über TObjectlist) rein.

Gruß
Mattze

RWarnecke 10. Mär 2012 08:18

AW: Windows copy und D&D
 
Ich kennen die beiden Komponenten VirtualExplorerTreeview und VirtualExplorerEasyListview jetzt nicht. Ich kann mir aber vorstellen, dass die ein Ereignis haben, welches nach dem Drag&Drop ausgelöst wird. Von diesem Ereignis kannst Du dann den Thread zum Kopieren starten.

Mattze 10. Mär 2012 09:42

AW: Windows copy und D&D
 
Hallo,

das ist sicherlich richtig. (Wobei ich dann evtl. in den "Urquellen" der Komponenten rumpfuschen muss, damit sie nicht ihr eigenes D&D machen.)
Das Problem sehe ich eigentlich weniger darin, wenn ich ein "Copy-D&D" auf die Komponente mache. Wie gesagt, da kann man das bestimmt beeinflussen, weil man da ja auch direkten "Programmierzugriff" hat.(Die haben nicht nur OnDragDrop usw. sondern auch OnOLEDragDrop, OnOLEDragLeave usw., also das, was für ein allgemeines D&D sicher das günstigere ist.)
Aber, was mache ich bei D&D woanders hin? Z. Bsp. aus meinem Explorer zum Windows Explorer.

Wie gesagt, unter XP ging das (mit dem gleichen Code, Komponente: TFileOperator).
Momentan gucke ich etwas wie ein Schwein ins Uhrwerk, nur nicht ganz so intelligent.
Ich habe zwar schon mal etwas mit OLE-D&D völlig selber gebastelt (in VirtualTreeview - ohne Explorer), aber, vielleicht gerade deshalb, ist es für mich nicht so ganz vorstellbar.

Weißt Du, warum Minimalweich das gerade in Zeiten von Multicore rausgenommen hat?

Gruß
Mattze


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:25 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