Мы пытаемся разработать приложение, которое отправляет сообщения службе, но мы отправляем только сообщение между двумя приложениями. Мы развиваемся в Delphi 7, Windows XP.Как отправить сообщение службе?
Нам необходимо, чтобы служба отправила сообщение в приложение в зависимости от результата действия, которое приложение отправило для обслуживания.
Ну, некоторые люди сказали, что невозможно отправить сообщение из приложения в службу. Итак, мы решили сделать две службы, и теперь нам нужно отправлять сообщения с одной службы на другую. Итак, дело в том, как отправить сообщение из службы другому?
Извините, но это неверно. Вы можете отправлять оконные сообщения службе. Нужно только установить соответствующий параметр при создании службы. Затем вы создаете свой собственный обработчик сообщений. И локально, сообщение GDI с WM_COPYDATA быстрее, чем любой другой механизм IPC (по крайней мере, если ваше сообщение - это несколько КБ). Чтобы отправить сообщение обратно в приложение, вы просто используете вызов PostMessage или SendMessage для экземпляра клиента HWND (который был отправлен с первым сообщением). См. Http://synopse.info/fossil/finfo?name=SQLite3/SQLite3Commons.pas и TSQLRestClientURIMessage + TSQLRestServer.ExportServerMessage –
@ A.Bouchez: в каком параметре создания вы конкретно указываете? 'SERVICE_INTERACTIVE_PROCESS'? Этот флаг больше не поддерживается, начиная с Vista. Окно сообщений НЕ МОЖЕТ проходить через границы сеансов (в любой версии Windows). Единственный способ, которым служба может обмениваться сообщениями окна с внешним приложением, - это то, что приложение работает на том же сеансе, что и служба. Службы НЕ запускаются в том же сеансе, что и большинство зарегистрированных пользователей в XP и ранее, и НЕТ пользователей в Vista и позже. –