gpt4 book ai didi

delphi - 如何确定 Windows 7 桌面是否有 ActiveWindow

转载 作者:行者123 更新时间:2023-12-03 15:57:03 24 4
gpt4 key购买 nike

有没有办法确定桌面是否有前台窗口?

这可行,但似乎不正确?当我的桌面上没有前台窗口时,句柄返回 328992。

Handle := GetForegroundWindow;
if Handle = 328992 then
begin
MessageBox(0, 'There is no active window.', 'No Active Window', MB_ICONWARNING or MB_OK);
exit;
end;

实现这一目标的最佳方法是什么?德尔福2010

后续:

iDesktopWindow := GetDesktopWindow;
iShellWindow := GetShellWindow;
iForegroundWindow := GetForegroundWindow;
ShowMessage('DesktopWindow: ' + IntToStr(iDesktopWindow));
ShowMessage('ShellWindow: ' + IntToStr(iShellWindow));
ShowMessage('ForegroundWindow: ' + IntToStr(iForegroundWindow));

DesktopWindow 返回 65552ShellWindow 返回 65864ForegroundWindow 返回 65724

我之前的编辑显示每次应用程序运行时 ForegroundWindow 都有不同的值,但我未能在获取该值之前最小化应用程序。现在我每次都能得到 ForegroundWindow 的一致值 65724。在这种情况下,没有事件窗口...只有桌面和最小化窗口。

最佳答案

总是有一个前景窗口。好吧,当 GetForegroundWindow 返回 NULL 时,有时会更改前景窗口,但这些瞬间很快就会过去!

我期望 328992 是用于显示桌面的窗口之一的窗口句柄。使用 Spy++ 或类似工具来确定它是哪个窗口。我的猜测是,您试图检测的状态是 shell window 时的状态。是前景窗口。

function GetShellWindow: HWND; stdcall external 'user32.dll';

function IsShellWindowTheForegroundWindow: Boolean;
begin
Result := GetShellWindow=GetForegroundWindow;
end;

关于delphi - 如何确定 Windows 7 桌面是否有 ActiveWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12144309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com