Главная страница
    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.011 c
14-1116403888
1008
2005-05-18 12:11
2005.06.06
Сеть.


4-1113724966
Antonn
2005-04-17 12:02
2005.06.06
Работа с *.cpl


4-1113389095
psa247
2005-04-13 14:44
2005.06.06
ShFileOperation


14-1116512421
zamik
2005-05-19 18:20
2005.06.06
Запуск программы


1-1116481181
Natalie
2005-05-19 09:39
2005.06.06
Как найти максимальное число ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский