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

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

PostMessage в сервисах [D5, Win2k]


Vn ©   (2002-10-18 11:31:00) 

Написал програму которая активно использует очередь сообщений. А теперь надо ее переделать в сервис. TService не имеет handle. Не понятно возможно ли использовать сабж.


Alexander   (2002-10-23 16:57:00) [1]

>Polevi
в потоке у меня вообще не создаётся никаких окон.
Окно есть там, откуда я создаю поток, но это пока я отлаживаю код, потом этого окна не будет.


Polevi   (2002-10-23 16:43:00) [2]

окно создается в том же потоке где цикл GetMessage ?


Игорь Шевченко   (2002-10-23 16:35:00) [3]

Alexander © (23.10.02 16:11)

Ой. Я к 98 никакого отношения, увы, не имею.


Alexander   (2002-10-23 16:11:00) [4]

Да... загнался совсем - не правильно объяснил. То, что сервисы только в NT - я знаю. У меня модуль - он в NT сервис, а в 98 - программа, которая запускается из RunServices реестра. Оконной функции нет и пытаюсь приведённым выше кодом обработать сообщение.


Игорь Шевченко   (2002-10-23 15:56:00) [5]

Ой. Сервисы, они вроде, в NT...

Рихтера, плз, почитайте


Alexander   (2002-10-23 15:08:00) [6]

Я в своей программе создаю поток (Win 98) У программы есть своё окно, но я отлаживаю код, который потом вставлю в сервис (или это сразу в сервисе надо проверять и в программе так не сработает?). в функции потока работа замирает на строке с GetMessage и более ничего в этой функции не происходит.


Игорь Шевченко   (2002-10-23 15:00:00) [7]

Alexander © (23.10.02 14:48)

Мне трудно что-либо сказать по этим строчкам. Почему не доходит, откуда не доходит.


Alexander   (2002-10-23 14:48:00) [8]

Пишу так:

hThread := CreateThread(nil, 0, @NotificationThread, @ThreadParams, 0, ThreadID);

где

function NotificationThread(P: Pointer): Cardinal; stdcall;
...
begin
...
while GetMessage(Msg, 0, 0, 0) do
if (Msg.message = WM_SPOOLERSTATUS) then
...
end;

так вот, до строки с if даже не доходит, т.е. не принимает ни одного сообщения.


Игорь Шевченко   (2002-10-23 13:41:00) [9]

MsgWaitForMultipleObjects или GetMessage


Alexander   (2002-10-23 13:16:00) [10]

Так мне в потоке нужно именно ждать сообщение, а PeekMessage не ждёт. Как написать лучше?


Игорь Шевченко   (2002-10-23 10:06:00) [11]

Лучше PeekMessage


Alexander   (2002-10-22 22:10:00) [12]

писать примерно так?

while GetMessage(Msg,0,0,0) do
if Msg.message = моё сооющение than
begin
...;
end;


Игорь Шевченко   (2002-10-22 17:26:00) [13]

Alexander © (22.10.02 17:01)

А ... PeekMessage, GetMessage ...


Alexander   (2002-10-22 17:01:00) [14]

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


Игорь Шевченко   (2002-10-18 11:54:00) [15]

Ходят злые слухи, что сервис, написанный на Delphi имеет окно и очередь сообщений.

А вообще, согласно теории, очередь сообщений имеет поток.


Наверх

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