Delphi 如何使用在Windows剪贴板中复制的文件加载流
我已将文件复制到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; 当您从硬盘驱动器将文件复制到剪贴板上时,它只需以格式复制文件
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)。