在线程之间共享消息队列(在Windows中)

时间:2009-04-23 17:27:54

标签: multithreading winapi

有没有办法在多个线程之间共享一个消息队列,或者在不使用钩子的情况下读取另一个线程的消息队列?

2 个答案:

答案 0 :(得分:1)

GetMessage和PeekMessage只读取当前线程的消息,不能用它们来读取发送到另一个线程所拥有的输入队列的消息。

尝试使用AttachThreadInput加入线程输入队列,这可能有效。

答案 1 :(得分:0)

消息队列中的消息可以根据它们所用的窗口进行区分,但我不认为可以根据有线程来区分消息 - 这些字段在MSG中不存在结构 - 所以我认为你不能在多个线程上共享队列。

这将为您提供非挂钩监控解决方案。

我很确定你可以偷看另一个线程队列,但问题是你基本上是在轮询;所以你会错过消息。

您对要阅读的主题有什么影响吗?如果是这样,你可以让他们重新传播他们的信息给你。

除此之外,我看不到办法做到这一点。