如何在 Delphi 上获取活动形式的 ClassName(可能来自另一个应用程序)?
似乎只Application.ActiveFormHandle返回活动形式Application。
如何在 Delphi 上获取活动形式的 ClassName(可能来自另一个应用程序)?
似乎只Application.ActiveFormHandle返回活动形式Application。
我相信您正在寻找的窗口句柄是由GetForegroundWindow.
要获取类名,请将该窗口句柄传递给 Windows API 函数GetClassName。这是该 API 函数的 Delphi 包装器:
function GetWindowClassName(Window: HWND): string;
const
  MaxClassNameLength = 257;//256 plus null terminator
var
  Buffer: array [0..MaxClassNameLength-1] of Char;
  len: Integer;
begin
  len := GetClassName(Window, Buffer, Length(Buffer));
  if len=0 then
    RaiseLastOSError;
  SetString(Result, Buffer, len);
end;
我使用了长度为 256 的缓冲区,因为窗口类名不允许长于该长度。