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

Вниз

Service и Handle   Найти похожие ветки 

 
Yogi   (2002-12-14 14:10) [0]

Приветствую! Продолжая заморачиваться с сервисами (службами), столкнулся со следующим вопросом: насколько я себе представляю, service application не имеет handle. Как же тогда вызывать функции API, требующие в качестве параметра handle? Например, как вызвать messagebox?


 
Reindeer Moss Eater   (2002-12-14 14:15) [1]

MessageBox из сервиса - это круто


 
RAA ©   (2002-12-14 16:36) [2]

Вот лично я сейчас пишу две программки вида сервис и проблемм с messagebox у меня не возникало(!))) А вот как создать форму без подключения модуля forms вот это уже задача(!)))
Причём размер моей программки 18 kb(!)))


 
asmith   (2002-12-14 17:22) [3]

Посмотри на сервисные компоненты Винды - практически нигде нит интерактивности. Хотя это в принципе возможно-разрешить ему взаимодействовать с оболочкой. Если твоя проблема-задание параметров работы сервиса-напиши апликуху MyService Manager, пусть она, напрмер, болтается в трее, легко доступна юзеру и позволяет править настроечные параметры из реестра или базы. Изменил параметры, перезаписал, рестартовал сервис, а он при старте считал настройки и сменил поведение. Если нужно следить за выходными данными сервиса-организуй лог и пиши в него, или, что еще лучше, заведи себе ветку в Application Event Log. Можно также наделить сервис свойствами СОМ-сервера и обращаться к нему из любого клиента, поддерживающего скриптинг. Но в любом случае сервис и GUI-вещи плохо совмещающиеся.


 
andrews   (2003-01-24 08:33) [4]

К вопросу о плохой совместимости GUI и сервиса. Как например AVP Control Center?


 
Reindeer Moss Eater   (2003-01-24 08:37) [5]

AVP Control Center это сервис???


 
Chubais ©   (2003-01-24 09:16) [6]

Reindeer Moss Eater (14.12.02 14:15)
MessageBox из сервиса - это круто
!!!!!!!!!!


 
Cobalt ©   (2003-01-24 09:26) [7]

2 Yogi
Хэндлы бывают разные,
Черные, белые, красные.
Но всем почему-то хочется
Над ними заморочиться?!

P.S. (К Yogi) что такое хэндл?


 
BSD ©   (2003-01-24 09:43) [8]

Используй MessageBox(Ex) с флагом MB_SERVICE_NOTIFICATION, и диалоговое окно отобразится в любои случае (даже если не включен Interract With Desktop).


 
Vasily Terekhov   (2003-01-24 14:16) [9]

хендл есть
получить можно через FindWindow("TApplication","<Имя exe>")


 
Hidrogen   (2003-02-28 08:35) [10]

Смотри
..\Delphi6\Source\Vcl\ScktSrvr.dpr


 
qsecofr   (2003-03-19 21:17) [11]

А вопросик можно? Тип сервиса stDevice вообще в Delphi работает?
Просто нигде не получается найти хотя-бы маааааахонький примерчик, а по аналогии с WIN32 сервисом не получается...
Может есть у кого ссылки...
Заранее спасибо.


 
Игорь Шевченко ©   (2003-03-20 09:23) [12]

Не работает


 
Jack666   (2003-03-25 18:05) [13]

Все из реально работающего сервиса:

1. MessageBox из сервиса легко работает, кто бы что не говорил:
Пример:
MessageBox(0,PChar(Exception(ExceptObject).Message),PChar(sCaption), MB_SERVICE_NOTIFICATION or MB_ICONSTOP);

2. Работает и это без проблем:

ShowMessage("Hello from service!!!");

3. Настройка параметров сервиса - тоже нет проблем:

procedure TATSService.ServiceStart(Sender: TService; var Started: Boolean);
begin
CheckStartupParameters;
SetConnectionString;
Init;
Started := True;
end;

где

procedure TATSService.CheckStartupParameters;
begin
if ParamCount > 1 then begin
if CompareText(sPortConfigParameter, Param[1]) = 0 then begin
SetupComPort := TSetupComPort.Create(ATSService);
try
SetupComPort.ShowModal;
finally
SetupComPort.Free;
end;
end
else if CompareText(sHelpParameter, Param[1]) = 0 then begin
MessageBox(0, PChar(sHelp), PChar(sCaption), MB_SERVICE_NOTIFICATION or MB_ICONINFORMATION);
end
else if CompareText(sAboutParameter, Param[1]) = 0 then begin
MessageBox(0, PChar(sAuthor), PChar(sCaption), MB_SERVICE_NOTIFICATION or MB_ICONINFORMATION);
end else
MessageBox(0, PChar(sBadParameter), PChar(sCaption), MB_SERVICE_NOTIFICATION or MB_ICONWARNING);
end;//if
end;

Тут вот исчо шо... параметры (к примеру -р -н и пр.) должен задавать в Service Control Panel и не закрывая окошка парамеров рестартовать сервис.

И последнее. Прежде чем все это делать, хорошо подумай, а нужна ли тебе ТАКАЯ интерактивность. Вариант с логами мне кажется лучче...


 
Саня   (2003-04-23 18:27) [14]

А у меня другой вопрос... Как в сервисе отлавливать сообщения Windows, посланные SendMessage или подобным... Оконная форма не помогает



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

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

Наверх




Память: 0.49 MB
Время: 0.037 c
1-84412
AbrosimovA
2003-06-06 16:54
2003.06.26
Выполнение процедуры в потоке


14-84549
kaif
2003-06-07 03:43
2003.06.26
Есть заказ для настоящего дельфиста


1-84213
OlegNOE
2003-06-12 18:48
2003.06.26
Дочерние окна


1-84242
VISA
2003-06-13 13:56
2003.06.26
TIniFile


1-84308
ASt
2003-06-15 02:49
2003.06.26
Непонятная ошибка при компиляции