gpt4 book ai didi

delphi - 聚焦右侧窗口

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

场景是我有一个“主应用程序”和一个“辅助应用程序”。 “帮助应用程序”会在键盘 Hook 上弹出,执行一些操作,然后重新聚焦主应用程序窗口。问题是,如果主应用程序在助手处于事件状态时弹出模式对话框,然后助手重新聚焦错误的窗口,则模式对话框将被隐藏,主应用程序将显示为“卡住”。

有什么解决这个问题的策略建议吗?

最佳答案

看起来“主应用程序”的模态表单不属于主应用程序窗口,否则模态表单将始终保持在主表单之上。因此,可能是编译的 Delphi 版本没有 MainFormOnTaskbar 属性,或者未设置该属性。那么它一定是隐藏的应用程序窗口拥有这些窗口。

您可以测试关闭“帮助应用程序”表单时主应用程序窗口是否被禁用(如果存在模态表单,则会出现这种情况),并恢复隐藏应用程序窗口拥有的最后一个事件弹出窗口,如果是的。

var
Wnd: HWND; // handle to 'main app's main form
mWnd: HWND; // handle to possible modal form
AppWnd: HWND; // handle to hidden Application window
begin
..

if not IsWindowEnabled(Wnd) then begin // test if there's a modal form
AppWnd := GetWindowLong(Wnd, GWL_HWNDPARENT); // TApplication window handle
mWnd := GetLastActivePopup(AppWnd); // most recently active popup window

// restore focus to mWnd

end else
// restore focus to Wnd

(当然,不要忘记包括对 API 函数结果的测试。)

关于delphi - 聚焦右侧窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8529946/

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