Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Linux的PostMessage_C++_Linux_Postmessage - Fatal编程技术网

C++ Linux的PostMessage

C++ Linux的PostMessage,c++,linux,postmessage,C++,Linux,Postmessage,我在Windows上编写了一些程序,它们利用PostMessage向目标应用程序发送击键和鼠标事件。除了可能使用DBus之外,我找不到在Linux上实现这一点的方法,但到目前为止我所看到的情况表明,我需要关注目标应用程序窗口 我发现的另一种选择是X11API(keysym.h),但这似乎也需要一个聚焦窗口 有没有一种方法可以将鼠标/键盘事件发送到Linux上不关注的窗口?如果我没有弄错,您需要一种方法来向运行在X服务器上的应用程序触发事件。有很多方法,如何做到这一点。其中最简单的一个是抛出工具,

我在Windows上编写了一些程序,它们利用PostMessage向目标应用程序发送击键和鼠标事件。除了可能使用DBus之外,我找不到在Linux上实现这一点的方法,但到目前为止我所看到的情况表明,我需要关注目标应用程序窗口

我发现的另一种选择是X11API(keysym.h),但这似乎也需要一个聚焦窗口


有没有一种方法可以将鼠标/键盘事件发送到Linux上不关注的窗口?

如果我没有弄错,您需要一种方法来向运行在X服务器上的应用程序触发事件。有很多方法,如何做到这一点。其中最简单的一个是抛出工具,称为
xdool

例子:
这将发送“hello”触发键盘序列,而无需聚焦
Firefox
本身。

谷歌对此有很多结果。你能使用进程间通信(如套接字、消息队列等)吗?@Lightness谷歌有一些结果,但对于不需要聚焦的Linux没有。模拟键盘很容易,向应用程序发送键盘信号并非如此(至少我有过这样的经历)。@sigalor遗憾的是,目标进程不是我自己的。虽然我可以注入一些共享对象文件并手动调用消息处理程序,但这将是一种侵入性的、依赖于版本的操作,并且需要的反向工程远远超过我现在所能接受的。
xdotool type --window Firefox hello