delphi - 如何检查是否已成功从剪贴板获取文件名列表?

标签 delphi clipboard error-checking

我刚刚找到了这段代码来从剪贴板获取文件,它工作正常,但我想将其设为 bool 函数,以便我知道它成功了。我需要测试什么来查看剪贴板上是否有文件并且一切正常?

USES Clipbrd, shellapi;

// procedure GetFileNameFromClipboard(oSL : TStringlist);
function GetFileNameFromClipboard(oSL : TStringlist) : Boolean;
var
      f: THandle;
      buffer: array [0..MAX_PATH] of Char;
      i, c: Integer;
begin
      Result:=False;
      if NOT Clipboard.HasFormat(CF_HDROP) then exit;
      Clipboard.Open;
      f := Clipboard.GetAsHandle(CF_HDROP);
      if f <> 0 then 
      begin
         c := DragQueryFile(f, $FFFFFFFF, nil, 0);
         for i:=0 to c-1 do 
         begin
             buffer[0] := #0;
             DragQueryFile(f, i, buffer, SizeOf(buffer));
             oSL.Add(buffer);
         end;
      end;
      Clipboard.Close;
   Result:=???????
end;

最佳答案

尝试这样的事情:

function GetFileNameFromClipboard(oSL : TStrings) : Boolean;
var
  f: THandle;
  buffer: array [0..MAX_PATH] of Char;
  S: string;
  i, c: UINT;
begin
  Result := False;
  Clipboard.Open;
  try
    f := Clipboard.GetAsHandle(CF_HDROP);
    if f = 0 then Exit;
    c := DragQueryFile(f, $FFFFFFFF, nil, 0);
    if c = 0 then Exit;
    for i := 0 to c-1 do 
    begin
      c := DragQueryFile(f, i, buffer, Length(buffer));
      if c <> 0 then begin
        SetString(s, buffer, c);
        oSL.Add(s);
        Result := True;
      end;
    end;
  finally
    Clipboard.Close;
  end;
end;

关于delphi - 如何检查是否已成功从剪贴板获取文件名列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17011609/

相关文章:

Go errors : Is() and As() claim to be recursive, 是否有实现错误接口(interface)并支持此递归的任何类型 - 无错误?

list - Prolog 错误参数

c# - 这个导致我在 Excel 电子表格中看到绿色三角形的公式有什么问题?

mysql - 为 MyDAC 定义自定义 POST 方法

delphi - 是否有使用 delphi 的 Amazon Product API 示例?

javascript - 如何使用JavaScript复制到剪贴板?

python - 有没有办法将 markdown 转换为解释性 RTF?

delphi - 线程应用程序中的 Indy 错误!

delphi - 线程不接收消息

windows - 在 Windows 中,剪贴板到底是什么?