德尔福剪贴板: Read file properties of a file copied

标签 delphi clipboard filesize delphi-10-seattle

我想检索复制到剪贴板的文件的文件大小。

我读了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 中测试。对于 Unicode 版本的 Delphi,请使用 FileNameW 格式。

另一种更实用的方法(对于复制的多个文件也很有用)是注册并处理 CF_HDROP格式。

这是 Delphi 中的一个示例:How to paste files from Windows Explorer into your application

关于德尔福剪贴板: Read file properties of a file copied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59052233/

相关文章:

delphi - 无法使用delphi indy发送UTF-8电子邮件

delphi - 通过 TDownloadUrl (Delphi) 使用 session /cookie 下载网页

linux - 从命令行将图像复制到剪贴板

python - PIL 剪贴板图像到 Base64 字符串

javascript - 我可以使用 javascript 将 onClick 粘贴到输入字段中吗

追加后PHP文件大小不变

sql-server - TClientDataSet 和大插入

delphi - Delphi 中带有 RTL 布局的工具栏?

c# - 如何获取文件的大小(托管在 Web 服务器上)?

javascript - 在 JavaScript 中通过 URL 获取文件大小