Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.11;
Скачать: CL | DM;

Вниз

Посылать сообщения сервису   Найти похожие ветки 

 
Dmitry_177   (2006-09-26 19:23) [0]

Как посылать сообщения сервису из dll-библиотеки? Я знаю как это делать с обычной программой с окном, а вот тут я не знаю, подскажите пожалуйста...

Библиотека:

var
H: HWND
begin
H := FindWindow("Form1",nil);
if H <> 0 then
begin
SendMessage (H,WM_COPYDATA,0,Integer(@_Data)) <> 0;
...

Принцип простой, находим окно с заголовком и отправляем ему сообщение, а вот как отправить сервису, он же без окна?


 
clickmaker ©   (2006-09-26 19:29) [1]

ControlService()


 
Dmitry_177   (2006-09-26 19:36) [2]

Я как понял это передает в сервис какоюнибудь команду и т.д. чтобы сервис это выполнил, я бы хотел просто свое значение передавать из библиотеки...


 
Сергей М. ©   (2006-09-26 20:55) [3]

Чем "команда" отличается от "значения" ?


> передавать из библиотеки


Передача с Луны чем-то отличается от передачи "из библиотеки" ?


 
Leonid Troyanovsky ©   (2006-09-26 20:59) [4]


> Dmitry_177   (26.09.06 19:23)  

> ему сообщение, а вот как отправить сервису, он же без окна?


Есть сервисы с окнами.


> т.д. чтобы сервис это выполнил, я бы хотел просто свое значение
> передавать из библиотеки...


А что, библиотека загружена не сервисом?
Если же он ее загрузил, то, видимо, знает, как _получить_
необходимое у оной.

--
Regards, LVT.


 
Dmitry_177   (2006-09-26 20:59) [5]

Мне нужно передавать в сервис коды клавишь, которые ловятся в хуке библиотеки...


 
Dmitry_177   (2006-09-26 21:01) [6]

P.S. Это не шпион!


 
Leonid Troyanovsky ©   (2006-09-26 21:03) [7]


> Dmitry_177   (26.09.06 20:59) [5]

> Мне нужно передавать в сервис коды клавишь, которые ловятся
> в хуке библиотеки...


Нормальный сервис даже не должен подозревать о
существовании неких клавиш.

Т.е., любой сервис должен уметь работать на сервере,
у которого отсутствует клавиатура, мышь и т.п.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2006-09-26 21:05) [8]


> Dmitry_177   (26.09.06 21:01) [6]

> P.S. Это не шпион!


А мы морально-этические проблемы и не касались.
Bad design only.

--
Regards, LVT.


 
Dmitry_177   (2006-09-26 21:08) [9]


> Leonid Troyanovsky ©   (26.09.06 21:03) [7]


Всеже мне нужно каким то образом передавать эти значения... Как это реализовать?


 
Leonid Troyanovsky ©   (2006-09-26 21:11) [10]


> Dmitry_177   (26.09.06 21:08) [9]

> Всеже мне нужно каким то образом передавать эти значения.
> .. Как это реализовать?


Как обычно.
Клиент, работающий интерактивно, передает необходимую сервису
информацию при посредстве tcp/ip, named pipes & etc.

--
Regards, LVT.


 
Dmitry_177   (2006-09-26 21:16) [11]

сервис обычный, Application Service, служба windows )))


 
Leonid Troyanovsky ©   (2006-09-26 21:18) [12]


> Dmitry_177   (26.09.06 21:16) [11]

> сервис обычный, Application Service, служба windows )))


Тем более.

--
Regards, LVT.


 
Dmitry_177   (2006-09-27 00:54) [13]

А как передавать сообщение то?


 
Игорь Шевченко ©   (2006-09-27 10:03) [14]


> А как передавать сообщение то?


http://www.delphimaster.ru/articles/named_pipes/index.html


 
Alex Konshin ©   (2006-09-27 12:12) [15]

> Игорь Шевченко ©   (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 12:34) [16]

Alex Konshin ©   (27.09.06 12:12) [15]

А сообщения через разные десктопы можно передавать ?


 
isasa ©   (2006-09-27 21:42) [17]

PostThreadMessage ?


 
Eraser ©   (2006-09-27 23:20) [18]

> [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.


 
Fay ©   (2006-09-28 16:01) [19]

2 Игорь Шевченко ©   (27.09.06 12:34) [16]
А разве нельзя? (не проверял)



Страницы: 1 вся ветка

Текущий архив: 2007.02.11;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.044 c
15-1169384879
Гоша
2007-01-21 16:07
2007.02.11
Бегущая строка


2-1169461062
hursand
2007-01-22 13:17
2007.02.11
Edit


2-1169404773
Гость_
2007-01-21 21:39
2007.02.11
property &amp; var


2-1169553193
SamAman
2007-01-23 14:53
2007.02.11
WinAPI


2-1169630947
распечатчик
2007-01-24 12:29
2007.02.11
Работа с принтером