![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 имеет окно и очередь сообщений.
А вообще, согласно теории, очередь сообщений имеет поток.