我正在编写一个对选定窗口进行一些更改的应用程序。我试图弄清楚如何在 c# 中按下按钮后选择窗口的 HWND。
流程将类似于:
用户按下一个显示选择窗口的表单按钮,表单隐藏自己不允许自己选择,用户在桌面上的另一个窗口中单击,这可以是任何应用程序,表单重新出现并收集所选的 HWND窗口中,程序使用 HWND 来处理它的事务。
我不知道该怎么做的部分是获取选择了哪个窗口。
任何帮助将不胜感激!
执行此类操作的“经典”方式 -由 Spy++和各种其他允许您选择要检查或使用的 UI 的应用程序使用 - 类似于:(这是从 C++/Win32 API 点编写的查看,但除了 WindowFromPoint 和 GetAncestor 之外,大多数步骤都有 .Net 等效项)
在拖动过程中也处理 ESC 以取消操作也被认为是礼貌的。
此外,上述内容对键盘不友好;在您的应用程序的生命周期内或仅在存在选择对话框时永久使用带有某些热键的说 RegisterHotkey 也是一个好主意,并使用 GetForegroundWindow() 响应热键,如其他回复中所述。
一种选择是轮询GetForegroundWindow API,直到 HWND 更改为另一个窗口。
一种方法是