簡體   English   中英

Delphi剪貼板:讀取復制文件的文件屬性

[英]Delphi Clipboard: Read file properties of a file copied

我想檢索復制到剪貼板的文件的文件大小。

我閱讀了TClipboard文檔,但沒有找到解決方案。

我看到TClipboard.GetAsHandle可能會有所幫助,但我無法完成任務。

僅通過檢查剪貼板,我就可以看到至少 2 種有用的格式:

FileName (Ansi) 和FileNameW (Unicode) 保存復制到剪貼板的文件名。 因此,基本上您可以使用RegisterClipboardFormat then (或兩者)之一,然后檢索您需要的信息。 例如

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 中的一個示例:如何將 Windows 資源管理器中的文件粘貼到您的應用程序中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM