Delphi 剪贴板:读取已复制文件的文件属性
Delphi Clipboard: Read file properties of a file copied
我想检索复制到剪贴板的文件的文件大小。
我阅读了 documentation of TClipboard 但我没有找到解决方案。
我看到 TClipboard.GetAsHandle
可能会有一些帮助,但我无法完成任务。
仅通过检查剪贴板我就可以看到至少 2 种有用的格式:
FileName
(Ansi) 和 FileNameW
(Unicode) 保存复制到剪贴板的文件名。
所以基本上你可以用 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;
获得文件名后,只需获取它的大小或您想要的其他属性即可。
注意:以上内容已在 Delphi 7 中测试。对于 Delphi 的 Unicode 版本,请使用 FileNameW
格式。
另一种更实用的方法(也适用于复制的多个文件)是注册和处理 CF_HDROP
格式。
下面是 Delphi 中的示例:How to paste files from Windows Explorer into your application
我想检索复制到剪贴板的文件的文件大小。
我阅读了 documentation of TClipboard 但我没有找到解决方案。
我看到 TClipboard.GetAsHandle
可能会有一些帮助,但我无法完成任务。
仅通过检查剪贴板我就可以看到至少 2 种有用的格式:
FileName
(Ansi) 和 FileNameW
(Unicode) 保存复制到剪贴板的文件名。
所以基本上你可以用 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;
获得文件名后,只需获取它的大小或您想要的其他属性即可。
注意:以上内容已在 Delphi 7 中测试。对于 Delphi 的 Unicode 版本,请使用 FileNameW
格式。
另一种更实用的方法(也适用于复制的多个文件)是注册和处理 CF_HDROP
格式。
下面是 Delphi 中的示例:How to paste files from Windows Explorer into your application