![]() |
Herausfinden ob Explorer eine Datei als Cut oder Copy ins Clipboard gepackt hat
Ich möchte mit dem Windows Explorer eine Datei ausschneiden(ctrl + x)
oder kopieren(ctrl + c) und in meine explorerähnliche Anwendung einfügen, genau so wie es auch der Windows Explorer macht, wenn ich ein neues Fenster öffne, oder das Verzeichnis wechsel und mit dem rechten Mausmenü einfüge or ctrl + v betätige. Wie finde ich heraus, ob die Datei vom Explorer ins Clipboard verschoben oder kopiert wurde? |
AW: Herausfinden ob Explorer eine Datei als Cut oder Copy ins Clipboard gepackt hat
Wie greifst du auf die Dateiliste zu?
![]() ![]() ![]() Tipp: ![]() |
AW: Herausfinden ob Explorer eine Datei als Cut oder Copy ins Clipboard gepackt hat
Lese die Zwischenablage wie in dem ersten Link aus und dann
die Windows eigene TSHFileOpStruct für movefile or copyfile |
AW: Herausfinden ob Explorer eine Datei als Cut oder Copy ins Clipboard gepackt hat
Schau mal, ob du mit dem Stichwort "DropEffekt" weiter kommst.
![]() ![]() ![]() Wie gesagt, siehe ClipboardViewer ... da siehst du ja die Unterschiede, zwischen Strg+C und Strg+X. |
AW: Herausfinden ob Explorer eine Datei als Cut oder Copy ins Clipboard gepackt hat
Hallo,
du kannst mit
Code:
und dem Verb 'PASTE' das Einfügen (autom. Cut oder Copy) auslösen.
function ShellDoContextMenuVerb(Folder: IShellFolder; Pidl: PItemIDList; Handle: THandle; Verb: string): Boolean;
var CM: IContextMenu; ICI: TCmInvokeCommandInfo; begin result:=False; if Assigned(Folder) then begin if (Folder.GetUIObjectOf(Handle, 1, Pidl, IID_IContextMenu, nil, CM) = NOERROR) then begin ZeroMemory(@ICI, sizeof(ICI)); ICI.cbSize:=sizeof(TCmInvokeCommandInfo); ICI.hwnd:=Handle; ICI.fMask:=CMIC_MASK_ASYNCOK; ICI.lpVerb:=PAnsiChar(AnsiString(Verb)); ICI.nShow:=SW_SHOWNORMAL; result:=Succeeded(CM.InvokeCommand(ICI)); CM:=nil; end; end; end; Wenn du wissen willst ob Paste überhaupt möglich ist kannst du
Code:
probieren.
format:=EnumClipboardFormats(0);
while format<>0 do begin ... GetClipboardFormatName(format, formatname, formatsize); ... if CompareText(formatstring, 'Shell IDList Array')=0 then //Paste OK ... format:=EnumClipboardFormats(format); end; Beste Grüße |
AW: Herausfinden ob Explorer eine Datei als Cut oder Copy ins Clipboard gepackt hat
Vielen Dank für die Infos.
@tomkupitz: Hmm - ist das die Funktion die mich entscheiden lässt - ob ich Cut oder Copy will? Sie liefert mir nicht die Variable, es befindet sich ein Cut oder Copy im Clipboard, oder steh ich gerade aufm Schlauch? |
AW: Herausfinden ob Explorer eine Datei als Cut oder Copy ins Clipboard gepackt hat
Mit dieser Methode ermittelst du nicht ob Cut oder Copy. Aber brauchst du das wirklich?
Mit einem ClipboardViewer schaltest du nur den Paste Button (egal ob Cut oder Copy). Das Einfügen übernimmt gezeigte Funktion. Die Aktualisierung deiner Dateianzeige steuerst du dann mit einer Folder-Change-Funktion. In meinem Dateimanager FFExpert benötige ich diese Info jedenfalls nicht. Und mir scheint du willst auch etwas Explorerähnliches bauen. |
AW: Herausfinden ob Explorer eine Datei als Cut oder Copy ins Clipboard gepackt hat
Zitat:
sondern auch jene, die andere Anwendungen ins Clipboard kopieren oder verschieben. |
AW: Herausfinden ob Explorer eine Datei als Cut oder Copy ins Clipboard gepackt hat
aber das macht obiges ja:
- du lauerst auf Shell IDList Array (d.h. bis eine beliebige App eine shellkonforme CUT/COPY Aktion gestartet hat) - du machst ShellDoContextMenuVerb und Ende... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:24 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