Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как заставить сервис ловить системные сообщения? 
:(
    Опции темы
danilsl
Дата 13.7.2007, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 15.3.2006

Репутация: нет
Всего: нет



Привет всем.
Пишу Service Application. Во время работы этот сервис должен будет размножать потоки. Для корректного завершения потоков я хочу в последней строке потока отправлять системное сообщение основному потоку сервиса, для уведомления его о том, что поток нужно добить. В сервисе прописан такой код:
Код

unit Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;

const
  WM_MY_MSG = WM_APP+5000;

type
  TTestSrv = class(TService)
    procedure ServiceStart(Sender: TService; var Started: Boolean);
  private
    { Private declarations }
    procedure ProcMsg(var Msg:TMessage); message WM_MY_MSG;
  public
    function GetServiceController: TServiceController; override;
    { Public declarations }
  end;

var
  TestSrv: TTestSrv;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  TestSrv.Controller(CtrlCode);
end;

function TTestSrv.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;

procedure TTestSrv.ProcMsg(var Msg: TMessage);
begin
  ShowMessage('Good');
end;

procedure TTestSrv.ServiceStart(Sender: TService; var Started: Boolean);
begin
  ShowMessage(IntToStr(TestSrv.ServiceThread.Handle));
end;

end.


Сообщения сервису посылаю пока из внешней проги. Пробовал и PostMessage и SendMessage и PostThreadMessage. В качестве хендла подсовывал им TestSrv.ServiceThread.Handle, не помогло. Попробовал подсовывать то что пишет про этот сервис WinSight из 7-й дельфи, тоже ноль реакции.
Что ещё можно сделать?
ЗЫ TestSrv.ServiceThread.Handle вычислял в обработчике OnServiceStart через всё тот же ShowMessage, взаимодействие с рабочим столом у сервиса разрешено, так что ShowMessage теряться не может.
PM MAIL   Вверх
fse
Дата 1.10.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 28.9.2007
Где: г. Рязань

Репутация: нет
Всего: 1



Что-то у меня сомнение на счёт TestSrv.ServiceThread.Handle! Это, я думаю, дескриптор потока, а не окна. Ты скорее всего отсылаешь месаги вникуда.
Можно сделать так: создай окно CreateWindow. И обрабатывай им сообщения (вынеси для него WndProc). Окно это могут искать сторонние проги при помощи FindWindow.
Так всё должно получиться наверняка.
PM MAIL   Вверх
Alix
Дата 1.10.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 3
Всего: 23



Цитата
Сообщения сервису посылаю пока из внешней проги. 

никак не прокатит. 

почитай свою же тему Как послать сообщение сервису?


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0743 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.