Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.044 c
15-1169024822
lookin
2007-01-17 12:07
2007.02.11
ICQ с телефона


15-1169130890
Stanislav
2007-01-18 17:34
2007.02.11
Кто настраивал GPS/GPRS трекеры?


8-1149966429
avlan
2006-06-10 23:07
2007.02.11
Внешний редактор изображений


15-1169438560
Slider007
2007-01-22 07:02
2007.02.11
С днем рождения ! 22 января


15-1169501743
agagaga
2007-01-23 00:35
2007.02.11
жирные надписи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский