gpt4 book ai didi

c++ - PostThreadMessage 到另一个进程

转载 作者:可可西里 更新时间:2023-11-01 09:26:38 24 4
gpt4 key购买 nike

我想向作为另一个进程(特别是作为 Windows 服务)运行的线程发送消息。我已阅读 PostThreadMessage 的文档但有些事情我不清楚。

如何获取服务线程的句柄?

The system only does marshalling for system messages (those in the range 0 to (WM_USER-1)). To send other messages (those >= WM_USER) to another process, you must do custom marshalling.

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

最佳答案

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

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

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

关于c++ - PostThreadMessage 到另一个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3083903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com