Paste files from Windows Explorer into your application (Views: 27)
Problem/Question/Abstract: I would like to be able to go to Windows Explorer, select a series of files, and then allow the user to "Paste" these files into my application. I simply need a list of the file names that were copied to the clipboard. Anyone know how to access this list? Answer: You can use OLE Drag & Drop, but since Explorer creates a standard CF_HDROP clipboard block you can also hack it this way: uses clipbrd, shellapi; {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var f: THandle; buffer: array[0..MAX_PATH] of Char; i, numFiles: Integer; begin Clipboard.Open; try f := Clipboard.GetAsHandle(CF_HDROP); if f <> 0 then begin numFiles := DragQueryFile(f, $FFFFFFFF, nil, 0); memo1.Clear; for i := 0 to numfiles - 1 do begin buffer[0] := #0; DragQueryFile(f, i, buffer, sizeof(buffer)); memo1.lines.add(buffer); end; end; finally Clipboard.close; end; end; |