Я пишу два небольших приложения на С++, которые должны взаимодействовать. Первым будет сервис, который время от времени должен о чем-то предупреждать пользователя. Поскольку служба не может создавать окна, я разработал приложение как два отдельных исполняемых файла.
Служба будет использовать уведомитель для связи.
Службе нужно только отправлять текстовые сообщения на уведомитель, который покажет всплывающую подсказку в системном трее.
Я пытаюсь использовать именованные каналы и думаю, что почти достиг цели, но не совсем. Что у меня есть до сих пор:
На стороне уведомителя:
m_hInPipe = CreateNamedPipe(L"\\\\.\\pipe\\nhsupspipe", PIPE_ACCESS_INBOUND,
PIPE_WAIT, 1, 1024, 1024, 60, NULL);
Это означает, что я создал канал с именем nhsupspipe, входящий канал.
Со стороны сервиса:
if (!WriteFile(m_hOutPipe, "My message to the user?", 23, &escritos, &o))
std::cout << "ERROR: " << GetLastError();
При отладке вижу, что все ок, пайп создан и WriteFile записывает в пайп мои 23 байта.
Мой вопрос: как на стороне уведомителя я смогу прочитать эти байты? Отправлено ли какое-либо сообщение процессу? Должен ли я писать обработчик для канала? Что-либо?