Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何使用在Windows剪贴板中复制的文件加载流_Delphi_Clipboard_Tstream - Fatal编程技术网

Delphi 如何使用在Windows剪贴板中复制的文件加载流

Delphi 如何使用在Windows剪贴板中复制的文件加载流,delphi,clipboard,tstream,Delphi,Clipboard,Tstream,我已将文件复制到Windows剪贴板(只需单击鼠标右键,复制)。 我想加载带有当前存储在剪贴板中的文件的TStream子体 uses Classes, Clipbrd; MyStream := TMemoryStream.Create; try //here I would like to load the clipboard file into MyStream finally MyStream.Free; end; 当您从硬盘驱动器将文件复制到剪贴板上时,它只需以格式复制文件

我已将文件复制到Windows剪贴板(只需单击鼠标右键,复制)。 我想加载带有当前存储在剪贴板中的文件的
TStream
子体

uses
  Classes, Clipbrd;

MyStream := TMemoryStream.Create;
try
  //here I would like to load the clipboard file into MyStream
finally
  MyStream.Free;
end;

当您从硬盘驱动器将文件复制到剪贴板上时,它只需以格式复制文件的完整路径和文件名。您可以使用该函数读取文件名,例如:

使用
类、Clipbrd、ShellAPI;
变量
hDrop:THandle
MyStream:TMemoryStream;
文件:TStringList;
NumFiles,FileIdx:DWORD;
文件名:字符的数组[0..MAX_PATH];
I:整数;
开始
文件:=TStringList.Create;
尝试
剪贴板。打开;
尝试
如果剪贴板.HasFormat(CF_HDROP),则
开始
//不要释放此句柄,剪贴板拥有它!
hDrop:=Clipboard.GetAsHandle(CF_hDrop);
NumFiles:=DragQueryFile(hDrop,$FFFFFFFF,nil,0);
如果NumFiles为0,则
开始
对于FileIdx:=0到NumFiles-1 do
开始
如果DragQueryFile(hDrop、FileIdx、FileName、MAX_PATH)为0,则
添加(文件名);
结束;
结束;
结束;
最后
剪贴板。关闭;
结束;
对于I:=0到Files.Count-1 do
开始
MyStream:=TMemoryStream.Create;
尝试
LoadFromFile(Files[I]);
MyStream.Position:=0;
//根据需要使用MyStream。。。
最后
免费;
结束;
结束;
最后
免费文件;
结束;
结束;

阅读以下内容:感谢您的澄清和完整的示例!在uses子句中还需要ShellAPI单位(DragQueryFile)。