Delphi剪贴板:读取已复制文件的文件属性

问题描述 投票:4回答:1

我想获取复制到剪贴板中的文件的文件大小。

我读过documentation of TClipboard,但没有找到解决方法。

[我看到TClipboard.GetAsHandle可能会有帮助,但我无法完成任务。

谢谢。

delphi clipboard filesize delphi-10-seattle
1个回答
0
投票

仅通过检查剪贴板,我至少可以看到2种有用的格式:

FileNameFileNameW,其中包含复制到剪贴板的文件名。因此,基本上,您可以向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;

一旦有了文件名,就可以得到它的大小或您想要的其他属性。

© www.soinside.com 2019 - 2024. All rights reserved.