我想获取复制到剪贴板中的文件的文件大小。
我读过documentation of TClipboard,但没有找到解决方法。
[我看到TClipboard.GetAsHandle
可能会有帮助,但我无法完成任务。
谢谢。
仅通过检查剪贴板,我至少可以看到2种有用的格式:
FileName
和FileNameW
,其中包含复制到剪贴板的文件名。因此,基本上,您可以向RegisterClipboardFormat
注册其中一个,然后检索所需的信息。例如
uses Clipbrd;
var
CF_FILE: UINT;
procedure TForm1.FormCreate(Sender: TObject);
begin
CF_FILE := RegisterClipboardFormat('FileName');
end;
function ClipboardGetAsFile: string;
var
Data: THandle;
begin
Clipboard.Open;
Data := GetClipboardData(CF_FILE);
try
if Data <> 0 then
Result := PChar(GlobalLock(Data)) else
Result := '';
finally
if Data <> 0 then GlobalUnlock(Data);
Clipboard.Close;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Clipboard.HasFormat(CF_FILE) then
ShowMessage(ClipboardGetAsFile);
end;
一旦有了文件名,就可以得到它的大小或您想要的其他属性。