如何将事件挂钩到其他应用程序中的Windows控件

我必须检测来自我没有源代码的应用程序的combobox何时发生了变化。 我们的想法是将事件挂钩到此控件,并在事件触发时获取控件的选定值。 我已经google了,但我刚刚找到了如何挂钩窗口( 如何挂钩窗口 ),当标题文本更改时。 我可以得到控件的句柄(FindWindowEx)但是,我不知道如何将事件挂钩到控件,请大家,如果有人可以帮我这个。

您可以查看SendMessage API。 DDE是一种旧的IPC方法,但它仍然适用于.net。

作为一种便宜的简单方法,只需创建一个带有guid +’|’的表单 +文本框的句柄作为Text属性。 当您的应用运行时,只需加载表单但不显示它(也将其从任务托盘中隐藏)。

你的另一个应用程序可以使用标题中的预定guid在第一个应用程序表单上使用FindWindowEx,并获取表单上文本框的句柄(使用管道char或其他东西从guid中分离)。

现在只需SendMessage(WM_SETTEXT)到文本框hwnd(给它用户在combobox中选择的值)。 如果你在text_changed事件上放置一个事件处理程序,它将在你的第一个应用程序中触发。