Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Посылать сообщения сервису [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()


Наверх

Титульная страница Поиск, карта сайта Написать письмо