Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.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++ 向另一进程发送PostThreadMessage_C++_Windows_Visual C++_Windows Services_Multithreading - Fatal编程技术网

C++ 向另一进程发送PostThreadMessage

C++ 向另一进程发送PostThreadMessage,c++,windows,visual-c++,windows-services,multithreading,C++,Windows,Visual C++,Windows Services,Multithreading,我想向作为另一个进程(特别是作为windows服务)运行的线程发布消息。我已经阅读了好几年的文档,但有些东西我还不清楚 如何获取服务线程的句柄 系统仅对系统消息(范围为0到(WM_USER-1)的消息)进行编组。要将其他消息(那些>=WM_USER)发送到另一个进程,必须执行自定义编组 我想发送我自己的消息,那么如何进行编组呢?PostThreadMessage在这里并不理想。获取线程ID确实是一个问题,因为您的服务必须运行多个线程。一个用于实现服务,另一个用于泵送读取消息所需的消息循环。Cre

我想向作为另一个进程(特别是作为windows服务)运行的线程发布消息。我已经阅读了好几年的文档,但有些东西我还不清楚

如何获取服务线程的句柄

系统仅对系统消息(范围为0到(WM_USER-1)的消息)进行编组。要将其他消息(那些>=WM_USER)发送到另一个进程,必须执行自定义编组


我想发送我自己的消息,那么如何进行编组呢?

PostThreadMessage在这里并不理想。获取线程ID确实是一个问题,因为您的服务必须运行多个线程。一个用于实现服务,另一个用于泵送读取消息所需的消息循环。CreateToolHelp32Snapshot()可以枚举线程,但您仍然不知道这两个线程中哪个线程正在运行

改用命名管道。在服务中调用CreateNamedPipe(),使用消息模式并为管道指定一个前缀为“Global\”的名称,以便它在用户会话中可见。用户代码可以使用已知的管道名称连接到管道。您可以通过管道发送任何您想要的内容,但您必须避免使用指针,因为它们在服务流程中无效。与消息封送相同的问题


其他可能性是套接字,与管道非常相似,但使用众所周知的端口号而不是名称,以及进程外COM。如果需要跨流程边界封送复杂对象,则使用COM是一个优势。如果您没有COM skillz,请避免使用它。

我想做的是找到我的服务和应用程序进行通信的最佳方式,并使这种通信对任何第三方都最不可见。我不想走这条路。命名管道看起来很有趣。