2009-04-23 4 views
0

Есть ли способ обмениваться очередью сообщений между несколькими потоками или иначе читать очередь сообщений другого потока без использования перехватчиков?Обмен очередями сообщений между потоками (в Windows)

+0

Вы говорите о сообщениях в окне, не так ли? Поскольку термин «очередь сообщений» часто используется для MSMQ. – Lucero

+0

Да ... но это почти всегда плохая идея. Почему бы вам не описать, что вы пытаетесь сделать? – Shog9

+0

@ Lucero: Правильно – 2009-04-23 17:35:20

ответ

0

Сообщения в очереди сообщений могут быть дифференцированы на основе окна, для которого они предназначены, но я не думаю, что сообщения могут быть дифференцированы на основе встроенного потока - полей просто нет в Структура MSG - поэтому я не думаю, что вы можете делиться очередью по нескольким потокам.

Это оставляет вам решение для мониторинга без крючка.

Я уверен, что вы могли бы заглянуть в другую очередь потоков, но проблема в том, что вы в основном опросили; поэтому вы будете пропускать сообщения.

У вас есть влияние на нити, которые вы хотите прочитать? если это так, вы можете заставить их повторно передать свои сообщения вам.

Помимо этого, я не вижу способа сделать это.

+0

Теоретически да , и я вижу, где вы собираетесь с этим, но это не решение, которое я ищу. – 2009-04-23 17:32:21

1

GetMessage и PeekMessage только читают сообщения для текущего потока, вы не можете использовать их для чтения сообщений, отправленных во входную очередь, принадлежащую другому потоку.

Попробуйте присоединиться к очереди ввода потоков, используя AttachThreadInput, что может работать.

Смежные вопросы