【发布时间】:2010-02-01 03:54:01
【问题描述】:
我想在一个 Qt 应用程序中创建一个事件,该事件可以由同时运行的单独 Qt 应用程序获取。正常的 sendevent 函数要求您命名将接收它的对象,但我不能使用它,我希望它像键盘按下事件一样过滤操作系统中的任何打开的程序。有谁知道这是怎么做到的吗?谢谢
【问题讨论】:
标签: c++ qt events filter window
我想在一个 Qt 应用程序中创建一个事件,该事件可以由同时运行的单独 Qt 应用程序获取。正常的 sendevent 函数要求您命名将接收它的对象,但我不能使用它,我希望它像键盘按下事件一样过滤操作系统中的任何打开的程序。有谁知道这是怎么做到的吗?谢谢
【问题讨论】:
标签: c++ qt events filter window
看看Inter-Process Communication in Qt。最跨平台友好的方式是使用套接字。
共享内存也是一种选择,但对于事件,我建议您使用一个套接字,然后您可以在接收端附加插槽以像本地事件一样处理它。
编辑:抱歉,当我阅读其他答案时,我想我错过了真正的重点,您想制作一个类似键盘记录器的东西,可以在任何地方记录笔划。不确定那个。
【讨论】:
首先 - 它远离跨平台,不能使用 Qt 来实现这个特定功能。那么,请回答这个问题,您的目标是哪个操作系统?
其次,您是否同时编写了两个应用程序?为什么不通过 D-bus(仅限 UNIX...)甚至通过 XMLRPC (http://doc.libqxt.org/tip/qxtrpcservice.html) 传递您的“事件”,并避免整个伪造事件业务?
【讨论】: