我想將文件複製到剪貼板。互聯網中的所有例子都是一樣的。我使用的是http://embarcadero.newsgroups.archived.at/public.delphi.nativeapi/200909/0909212186.html,但它不起作用。在Delphi中將文件複製到剪貼板中
我使用Rad Studio XE並傳遞完整路徑。在調試模式,我得到這樣一些警告:
Debug Output:
Invalid address specified to RtlSizeHeap(006E0000, 007196D8)
Invalid address specified to RtlSizeHeap(006E0000, 007196D8)
我不知道是我的環境有關:Windows 8.1中64位的RAD Studio XE。 當我嘗試粘貼剪貼板時,沒有任何反應。另外,使用監視器工具查看剪貼板,該工具會顯示錯誤。
的代碼是:
procedure TfrmDoc2.CopyFilesToClipboard(FileList: string);
var
DropFiles: PDropFiles;
hGlobal: THandle;
iLen: Integer;
begin
iLen := Length(FileList) + 2;
FileList := FileList + #0#0;
hGlobal := GlobalAlloc(GMEM_SHARE or GMEM_MOVEABLE or GMEM_ZEROINIT,
SizeOf(TDropFiles) + iLen);
if (hGlobal = 0) then raise Exception.Create('Could not allocate memory.');
begin
DropFiles := GlobalLock(hGlobal);
DropFiles^.pFiles := SizeOf(TDropFiles);
Move(FileList[1], (PChar(DropFiles) + SizeOf(TDropFiles))^, iLen);
GlobalUnlock(hGlobal);
Clipboard.SetAsHandle(CF_HDROP, hGlobal);
end;
end;
UPDATE:
我很抱歉,我覺得愚蠢。在我的項目中,我使用了無法運行的代碼,即有人問到的原始問題,而我使用了Remy的代碼,這是Stackoverflow中的正確解決方案。我以爲我在我的項目中使用了Remy的代碼。所以,現在,使用Remy的代碼,一切都很好。對不起,這個錯誤。
「此工具向我顯示錯誤。」它顯示的錯誤是什麼?它究竟是什麼工具? – 2014-12-03 18:12:21