如果它位于应用程序未知的窗口中,是否可以在当前鼠标位置获取控件? (不在Application.OpenForms
)
我实现了一个低级鼠标钩子,它可以让鼠标位于屏幕上的任何位置,但我似乎无法访问我的应用程序之外的控件。我想要做的是在OpenFileDialog中获取一个按钮。我可以在对话框中获得句柄,但是我无法使用Control.FromHandle()
从对话框中获取控件,因为这仅适用于Application中的控件。
答案 0 :(得分:0)
如果您尝试获取.NET Control
,则无法实现。原因是Control
IS HWND
。这里的"HWND"
是指实际的Windows窗口项。例如,不可能自动在现有窗口周围包装一个新的控件实例,更不用说从其他.NET应用程序中获取Control
实例了,如果它是一个。
如果您尝试将.NET Control
插入OpenFileDialog
,这也是不可能的,因为OpenFileDialog
不是.NET表单。
如果你真的想要鼠标位置的HWND
,你可以使用pinvoke来使用WindowFromPoint
函数来获取它。
答案 1 :(得分:0)
可以使用Win32 API。您需要GetDlgItem()来获取您正在寻找的按钮的句柄。使用Spy ++查找控件ID。我需要在this thread的帖子中提供您需要的代码类型的示例。该示例适用于进程内对话框,它也可以在进程外执行。
请注意,您的代码可能会破坏下一版本的Windows。