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

Вниз

Запуск программы из сервиса   Найти похожие ветки 

 
IronMan   (2005-04-16 18:27) [0]

Доброе время суток.
Возникла задача запустить программу из сервиса... программа то запускается, вот только её кроме как в таск менеджере нигде не видно! Как быть?

вот код:

procedure TServ.ServiceExecute(Sender: TService);
var
 si: STARTUPINFO;
 pi: PROCESS_INFORMATION;
 pchCmd: PChar;
begin

 FillChar(si,SizeOf(TStartupInfo),#0);
 FillChar(pi,SizeOf(TProcessInformation),#0);
 SI.cb := SizeOf(TStartupInfo);
 si.wShowWindow := SW_SHOW;
 pchCmd := "C:\WINDOWS\system32\calc.exe";
 if CreateProcess(nil,
   pchCmd,
   nil,
   nil,
   false,
   NORMAL_PRIORITY_CLASS,
   nil,
   nil,
   si,
   pi) then
 begin
   //windows.MessageBox(0, "Error", "Test", MB_OK);
 end;
end;

и ещё вопросик. Как можно показать сообщение (showmessage) из сервиса?


 
Ученик   (2005-04-16 19:16) [1]

TService.Interactive = True


 
VMcL ©   (2005-04-16 19:17) [2]

>>IronMan   (16.04.05 18:27)

>Возникла задача запустить программу из сервиса... программа то запускается, вот только её кроме как в таск менеджере нигде не видно! Как быть?

Подозреваю, что нужно указать si.lpDesktop.

>Как можно показать сообщение (showmessage) из сервиса?

Не уверен на 100%, но можно попробовать:
MessageBox(..., ..., ..., MB_OK or MB_SERVICE_NOTIFICATION);


 
IronMan   (2005-04-16 19:24) [3]

VMcL ©
Не уверен на 100%, но можно попробовать:
MessageBox(..., ..., ..., MB_OK or MB_SERVICE_NOTIFICATION);


Спасибо большое- сработало!

Подозреваю, что нужно указать si.lpDesktop.

Я тоже так думаю, но ума не приложу, какое имя у моего десктопа ((

Ученик
TService.Interactive = True


Я впервую очередь так и сделал, но мне так и не удалось вызвать (показать) не одной формы из сервиса. Такое впечатление, что сервис не видит рабочего стола.


 
IronMan   (2005-04-16 19:55) [4]

Чуть не забыл! Как сделать программу, чтобы её можно было запускать и как сервис и как простое приложение. РАдмин как-то это умеет делать...


 
kaZaNoVa ©   (2005-04-16 20:19) [5]

IronMan   (16.04.05 19:55) [4]
имхо это сложно ..


 
Ученик   (2005-04-16 20:29) [6]

Не очень сложно :-)

{ MyProject.dpr }

if (ParamCount > 0) and (ParamStr(1) = "/SERVICE") then begin
 SvcMgr.Application.Initialize;
 ....
 SvcMgr.Application.Run;
end else begin
 Forms.Application.Initialize;
 ...
 Forms.Application.Run;
end


 
IronMan   (2005-04-16 20:36) [7]

Ученик

Спасибо! Попробую!
А как можно показать окно из сервиса?... что то не получается...


 
IronMan   (2005-04-16 20:41) [8]

Ученик

А SCManager по-умолчанию запускает сервис именно с параметром  /SERVICE?


 
Ученик   (2005-04-16 20:47) [9]

>IronMan   (16.04.05 20:36) [7]

Ученик   (16.04.05 19:16) [1]

Проверить, что в списке служб (сервисов) в параметрах установлен Allow service to interact with Desktop

IronMan   (16.04.05 20:41) [8]
Он запускает с теми параметрами, которые заданы при установке сервиса, а они могут быть любыми


 
sniknik ©   (2005-04-16 20:48) [10]

IronMan   (16.04.05 19:55) [4]
scktsrvr.exe в поставке дельфей именно так и сделан, и исходнике в тойже поставке есть, посмотри.


 
Ученик   (2005-04-16 20:52) [11]

>sniknik ©   (16.04.05 20:48) [10]
Если не затруднит, каталог исходников не подскажите ?


 
IronMan   (2005-04-16 20:58) [12]

Ученик

Еле нашёл ))
C:\Program Files\Borland\Delphi7\Source\Vcl


 
Ученик   (2005-04-16 21:04) [13]

>IronMan   (16.04.05 20:58) [12]

А я Demos обшарил, не нашел :-)


 
IronMan   (2005-04-16 21:05) [14]

sniknik ©

Спасибо громаднейшее. scktsrvr.exe- это ответ на все мои вопросы.



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

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

Наверх




Память: 0.49 MB
Время: 0.048 c
1-1116843208
Fynjy1984
2005-05-23 14:13
2005.06.06
TChart Как преобразовать координаты


1-1116423009
lehich
2005-05-18 17:30
2005.06.06
разбить содержимое StringList на строки


6-1111370769
administrator
2005-03-21 05:06
2005.06.06
Delph NET


4-1113549534
старый маразматикЪ
2005-04-15 11:18
2005.06.06
Работаю с файлом при помощи ф-ций FileOpen FileRead FileWrite


1-1116880874
grol
2005-05-24 00:41
2005.06.06
Какой тип строковых переменных лучше использовать???