如何构建一个拦截并通过击键和鼠标点击其他应用程序的Windows应用程序?

Rob*_*ney 5 wpf winapi topmost winforms

我正在与想要为遗留应用程序添加功能的客户合作.供应商无用的应用程序具有Windows窗体UI.我的客户想要的是当用户点击应用程序中的一条信息时触发此应用程序之外的某些功能.

我已经看到了另一个客户的简单版本.在这种情况下,有一个应用程序,包含一个已设置为最顶层窗口的表单SetWindowPos.当用户单击此表单上的按钮时,应用程序会找到旧版应用程序的窗口,并从窗口的标题中获取信息.这是不优雅的 - 即使传统的应用程序没有打开,这个浮动按钮永远不会消失 - 但它的工作原理.

我想知道是否可以使用带有Topmost属性集的无边框透明WPF窗口执行类似的操作.我正在考虑的应用程序将分析遗留应用程序窗口中的内容并定义热点列表.它将截取并处理热点中的任何鼠标点击,并将所有剩余的鼠标点击传递到旧版应用程序.

我对Windows API并不十分熟悉,所以我不知道实现这种功能是否简单(甚至可能).在我看来,如果我正在编写反恶意软件工具,我想到的应用程序正是我试图削弱的那种东西.

如果这实际上是一个可行的项目,那么最好的方法是什么?我应该注意哪些意想不到的问题?

Dav*_*nan 3

这可以通过 WH_CALLWNDPROC和/或 WH_GETMESSAGE钩子的方式通过覆盖按钮来完成,而不需要任何技巧。