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

时间:2012-08-14 21:42:19

标签: c# winforms

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

1 个答案:

答案 0 :(得分:0)

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

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

您的其他应用程序可以使用标题中的预定guid在第一个应用程序表单上使用FindWindowEx,并获取表单上文本框的句柄(使用管道字符或其他内容将其与guid分开)。

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