![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Посылать сообщения сервису [D7, WinXP]
Dmitry_177 © (2006-09-26 19:23:00)Как посылать сообщения сервису из dll-библиотеки? Я знаю как это делать с обычной программой с окном, а вот тут я не знаю, подскажите пожалуйста...
Библиотека:
var
H: HWND
begin
H := FindWindow('Form1',nil);
if H <> 0 then
begin
SendMessage (H,WM_COPYDATA,0,Integer(@_Data)) <> 0;
...
Принцип простой, находим окно с заголовком и отправляем ему сообщение, а вот как отправить сервису, он же без окна?
Fay (2006-09-28 16:01:00) [1]2 Игорь Шевченко © (27.09.06 12:34) [16]
А разве нельзя? (не проверял)
Eraser (2006-09-27 23:20:00) [2]> [17] isasa © (27.09.06 21:42)
из описания ф-ии PostThreadMessage в MSDN:
Windows 2000/XP: This thread must either belong to the same desktop as the calling thread or to a process with the same locally unique identifier (LUID). Otherwise, the function fails and returns ERROR_INVALID_THREAD_ID.
isasa (2006-09-27 21:42:00) [3]PostThreadMessage ?
Игорь Шевченко (2006-09-27 12:34:00) [4]Alex Konshin © (27.09.06 12:12) [15]
А сообщения через разные десктопы можно передавать ?
Alex Konshin (2006-09-27 12:12:00) [5]> Игорь Шевченко © (27.09.06 10:03) [14]
> > А как передавать сообщение то?
> http://www.delphimaster.ru/articles/named_pipes/index.html
Если человек хочет посылать/получать Windows message (WM_*), то зачем named pipes, tcp и т.п.? Можно же посылать как обычно. Важно просто знать, что для получения сообщений Windows не нужно иметь окно, а нужно иметь очередь сообщений. Чтобы какая-то нить заимела очередь сообщений достаточно попытаться читать эти сообщения - очередь автоматом будет создана. Чтобы ждать сообщения в какой-то нити, рекомендую ждать по функции MsgWaitForMultiple...(полное имя не помню на вскидку, а искать лень), и толко в случае сообщения его читать из очереди. Почему имено эту функцию? А потому, что можно там же ждать и других событий.
Игорь Шевченко (2006-09-27 10:03:00) [6]
> А как передавать сообщение то?
http://www.delphimaster.ru/articles/named_pipes/index.html
Dmitry_177 (2006-09-27 00:54:00) [7]А как передавать сообщение то?
Leonid Troyanovsky (2006-09-26 21:18:00) [8]
> Dmitry_177 (26.09.06 21:16) [11]
> сервис обычный, Application Service, служба windows )))
Тем более.
--
Regards, LVT.
Dmitry_177 (2006-09-26 21:16:00) [9]сервис обычный, Application Service, служба windows )))
Leonid Troyanovsky (2006-09-26 21:11:00) [10]
> Dmitry_177 (26.09.06 21:08) [9]
> Всеже мне нужно каким то образом передавать эти значения.
> .. Как это реализовать?
Как обычно.
Клиент, работающий интерактивно, передает необходимую сервису
информацию при посредстве tcp/ip, named pipes & etc.
--
Regards, LVT.
Dmitry_177 (2006-09-26 21:08:00) [11]
> Leonid Troyanovsky © (26.09.06 21:03) [7]
Всеже мне нужно каким то образом передавать эти значения... Как это реализовать?
Leonid Troyanovsky (2006-09-26 21:05:00) [12]
> Dmitry_177 (26.09.06 21:01) [6]
> P.S. Это не шпион!
А мы морально-этические проблемы и не касались.
Bad design only.
--
Regards, LVT.
Leonid Troyanovsky (2006-09-26 21:03:00) [13]
> Dmitry_177 (26.09.06 20:59) [5]
> Мне нужно передавать в сервис коды клавишь, которые ловятся
> в хуке библиотеки...
Нормальный сервис даже не должен подозревать о
существовании неких клавиш.
Т.е., любой сервис должен уметь работать на сервере,
у которого отсутствует клавиатура, мышь и т.п.
--
Regards, LVT.
Dmitry_177 (2006-09-26 21:01:00) [14]P.S. Это не шпион!
Dmitry_177 (2006-09-26 20:59:00) [15]Мне нужно передавать в сервис коды клавишь, которые ловятся в хуке библиотеки...
Leonid Troyanovsky (2006-09-26 20:59:00) [16]
> Dmitry_177 (26.09.06 19:23)
> ему сообщение, а вот как отправить сервису, он же без окна?
Есть сервисы с окнами.
> т.д. чтобы сервис это выполнил, я бы хотел просто свое значение
> передавать из библиотеки...
А что, библиотека загружена не сервисом?
Если же он ее загрузил, то, видимо, знает, как _получить_
необходимое у оной.
--
Regards, LVT.
Сергей М. (2006-09-26 20:55:00) [17]Чем "команда" отличается от "значения" ?
> передавать из библиотеки
Передача с Луны чем-то отличается от передачи "из библиотеки" ?
Dmitry_177 (2006-09-26 19:36:00) [18]Я как понял это передает в сервис какоюнибудь команду и т.д. чтобы сервис это выполнил, я бы хотел просто свое значение передавать из библиотеки...
clickmaker (2006-09-26 19:29:00) [19]ControlService()