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