LaB*_*cca 7 delphi clipboard filesize delphi-10-seattle
我想检索复制到剪贴板的文件的文件大小。
我阅读了TClipboard的文档,但没有找到解决方案。
我认为这TClipboard.GetAsHandle可能会有所帮助,但是我无法完成任务。
谢谢。
kob*_*bik 11
仅从检查剪贴板就可以看到至少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;
Run Code Online (Sandbox Code Playgroud)
获得文件名后,只需获取文件的大小或所需的其他属性即可。
注意:以上内容已在Delphi 7中进行了测试。Delphi的Unicode版本使用该FileNameW格式。
另一种更实用的方法(对复制的多个文件也有用)是注册和处理CF_HDROP格式。
这是Delphi中的一个示例:如何将文件从Windows资源管理器粘贴到应用程序中
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |