进程间通信

时间:2011-07-15 06:50:31

标签: java windows events hook interprocess

我想知道我用java编写的应用程序是否有可能在其他第三方应用程序(如编辑器,办公应用程序等)中监视事件(如单击文件菜单或编辑菜单)......

我的应用程序应该在后台运行,它应该能够捕获和更改当前关注的应用程序的事件,这些应用程序可能不一定是java应用程序。

例如:如果用户点击该文件 - >在Microsoft Word中保存为选项,那么我的应用程序应该能够接收这两个事件,并且能够在任何时候自动执行这些事件 必要..

请帮忙

提前致谢

1 个答案:

答案 0 :(得分:1)

我从来没有用Java做过这个,但是既然你正在处理Win32,我至少可以建议原生部分。您正在寻找的是挂钩您系统上的其他进程。为此,您必须编写本机DLL。这是一种常见的技术,您可以轻松找到有关它的大量信息。来自MSDN的一个好的起点是Using Hooks

一旦将DLL注入系统中的所有其他进程,您就必须弄清楚如何识别您真正感兴趣的进程。您将如何做到这一点取决于您实际尝试做什么。为了更好地了解在不同操作上发送的消息,您可以使用VS附带的Spy++

最后,您必须在本机DLL和Java程序之间建立一些通信。这是我不熟悉的部分:你必须使用JNI。幸运的是,JNI是一个很好的主题,你可以在这个网站上找到很多建议。