Как создать глобальное окно для взаимодействия процессов? - PullRequest
0 голосов
/ 19 апреля 2019

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

Так возможно ли создать окно с разделяемым дескриптором для нескольких процессов?

1 Ответ

0 голосов
/ 22 апреля 2019

Дескрипторы окна являются общими по умолчанию, так же как вы можете найти их через FindWindow или FindWindowEx.То, что вы хотите, немного похоже на сокетную связь, клиент-сервер-клиент транзитный протокол.Просто розетки более мощные и могут использоваться на разных машинах.

Вы можете обмениваться данными между процессами, определяя свой собственный тип сообщения WM_*, и вы можете контролировать межпроцессное взаимодействие «несколько-ко-многим».Но на практике это не практично (если не принимать во внимание уродство), оно не такое мощное, как сокет, не настолько зрелое, как технология сокетов, и требует больше ресурсов (из-за видимого окна).

Конечно, как сказал @IInspectable, существует еще один способ окон только для сообщений .Но окно не видно, что не является «интуитивным».Получение дескриптора окна так же «некрасиво», как и открытие файла.Это как инкапсуляция очереди сообщений в невидимое окно.Кроме того, если окно было случайно закрыто, связь не будет установлена.

Итак, резюме: вы можете использовать видимое окно для обмена данными между процессами в соответствии с вашими предпочтениями, но этот метод не практичен (если нетособая необходимость).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...