Re[3]: Очереди сообщений
От: Аноним  
Дата: 01.07.09 10:27
Оценка:
Здравствуйте, x64, Вы писали:

DTB>>если не ошибаюсь, никто не мешает создать невидимое окно (даже сервису), и заниматься пересылкой через него


x64>Насколько мне известно, окна принадлежат какому-либо конкретному рабочему столу (и конкретному сеансу). Соответственно, если служба не интерактивная (а в Vista оно всегда так), то такой подход работать не будет.


Позволю себе немного расширить Ваш ответ, если не возражаете

Все окна и потоки привязаны к Desktop'y, каждый Desktop принадлежит Window station, и у каждой терминальной сессии свой набор Window Stations. Поток не может послать сообщение (любое) окну, привязанному к другому десктопу даже в пределах одной оконной станции. Но, насколько помню, поток может послать сообщение другому потоку, даже если эти два потока привязаны к разным столам в разных станциях. Возможно ли это проделать между потоками в разных терминальных сессиях, не знаю, но очень сомневаюсь. Хотя как-нибудь надо-бы проверить, я экспериментировал ещё на W2k без terminal service, и больше к этому не возвращался.

Но в любом случае, WM_COPYDATA можно отправлять только синхронно, то есть только окну, PostThreadMessage не годится.

В принципе, в системе без Terminal Service сервис мог бы сделать один из своих потоков "интерактивным", подключив его к интерактивному столу, но Terminal Service переводят его в разряд экзотитки, не говоря уж о проблемах безопасности.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.