请教各位大侠:
当在资源管理器中将文件复制到剪贴板后,在剪贴板查看器中显示的是该文件的路径。在Delphi中用IsClipboardFormatAvailable函数得到该文件数据的类型是CF_HDROP。
请问:①在Delphi中应该如何写代码,才能取出剪贴板上该文件的路径?
②在Delhpi中用以下代码将文件复制到剪贴板上后,在剪贴板查看器中显示的不是该文件的路径,却是“剪贴簿查看器无法以当前格式显示该信息。要查看该信息,请尝试将其粘贴到文档中”。我在资源管理器"粘贴"时,文件顺利完成粘贴任务。应该如何修改以下代码,才能让剪贴簿查看器正确显示该文件的路径?
代码:
uses shlobj,activex,clipbrd;procedure TForm1.Button1Click(Sender: TObject);
var
FE:TFormatEtc;
Medium: TStgMedium;
FileName:String;
dropfiles:PDropFiles;
pFile:PChar;
begin
FileName:='c:\1.bmp';
FE.cfFormat := CF_HDROP;
FE.dwAspect := DVASPECT_CONTENT;
FE.tymed := TYMED_HGLOBAL;
Medium.hGlobal := GlobalAlloc(GMEM_SHARE or GMEM_ZEROINIT, SizeOf(TDropFiles)+length(FileName)+1);
if Medium.hGlobal<>0 then begin
Medium.tymed := TYMED_HGLOBAL;
dropfiles := GlobalLock(Medium.hGlobal);
try
dropfiles^.pfiles := SizeOf(TDropFiles);
dropfiles^.fwide := False;
longint(pFile) := longint(dropfiles)+SizeOf(TDropFiles);
StrPCopy(pFile,FileName);
Inc(pFile, Length(FileName)+1);
pFile^ := #0;
finally
GlobalUnlock(Medium.hGlobal);
end;
Clipboard.SetAsHandle(CF_HDROP,Medium.hGlobal);
end;
end;
end.
当在资源管理器中将文件复制到剪贴板后,在剪贴板查看器中显示的是该文件的路径。在Delphi中用IsClipboardFormatAvailable函数得到该文件数据的类型是CF_HDROP。
请问:①在Delphi中应该如何写代码,才能取出剪贴板上该文件的路径?
②在Delhpi中用以下代码将文件复制到剪贴板上后,在剪贴板查看器中显示的不是该文件的路径,却是“剪贴簿查看器无法以当前格式显示该信息。要查看该信息,请尝试将其粘贴到文档中”。我在资源管理器"粘贴"时,文件顺利完成粘贴任务。应该如何修改以下代码,才能让剪贴簿查看器正确显示该文件的路径?
代码:
uses shlobj,activex,clipbrd;procedure TForm1.Button1Click(Sender: TObject);
var
FE:TFormatEtc;
Medium: TStgMedium;
FileName:String;
dropfiles:PDropFiles;
pFile:PChar;
begin
FileName:='c:\1.bmp';
FE.cfFormat := CF_HDROP;
FE.dwAspect := DVASPECT_CONTENT;
FE.tymed := TYMED_HGLOBAL;
Medium.hGlobal := GlobalAlloc(GMEM_SHARE or GMEM_ZEROINIT, SizeOf(TDropFiles)+length(FileName)+1);
if Medium.hGlobal<>0 then begin
Medium.tymed := TYMED_HGLOBAL;
dropfiles := GlobalLock(Medium.hGlobal);
try
dropfiles^.pfiles := SizeOf(TDropFiles);
dropfiles^.fwide := False;
longint(pFile) := longint(dropfiles)+SizeOf(TDropFiles);
StrPCopy(pFile,FileName);
Inc(pFile, Length(FileName)+1);
pFile^ := #0;
finally
GlobalUnlock(Medium.hGlobal);
end;
Clipboard.SetAsHandle(CF_HDROP,Medium.hGlobal);
end;
end;
end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货