Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.012 c
14-1116578066
lexer
2005-05-20 12:34
2005.06.06
html - cтраница вместо 404 Error "The page cannot be found"


1-1116581460
Antonn
2005-05-20 13:31
2005.06.06
"Привязан" ли Zlib к Delphi?


6-1111352201
redlord
2005-03-20 23:56
2005.06.06
охрана блокированного сокета


1-1116594321
Erik1
2005-05-20 17:05
2005.06.06
Как учесть выравнивание в записи при переносе даных?


9-1110363388
Djon007
2005-03-09 13:16
2005.06.06
Любители Diablo LoD отзовитесь?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский