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

Вниз

Сервис   Найти похожие ветки 

 
UNLoader   (2003-01-13 17:25) [0]

Привет всем!
Решил на днях поразбираться с сервисами - залез на delphi.xonix.ru, там был пример. По нему я и написАл следующий код


program UNLoader;

uses Windows, WinSVC;

{$R *.RES}

var DispatchTable : array [0..1] of _SERVICE_TABLE_ENTRYA;
ServiceName: PChar;
ServiceStatus : SERVICE_STATUS;
ServiceStatusHandle : SERVICE_STATUS_HANDLE;

procedure ServiceCtrlHandler(Opcode : Cardinal);stdcall;
var
Status : Cardinal;
begin
case Opcode of
SERVICE_CONTROL_PAUSE :
begin
ServiceStatus.dwCurrentState := SERVICE_PAUSED;
end;
SERVICE_CONTROL_CONTINUE :
begin
ServiceStatus.dwCurrentState := SERVICE_RUNNING;
end;
SERVICE_CONTROL_STOP :
begin
ServiceStatus.dwWin32ExitCode:=0;
ServiceStatus.dwCurrentState := SERVICE_STOPPED;
ServiceStatus.dwCheckPoint :=0;
ServiceStatus.dwWaitHint :=0;

if not SetServiceStatus (ServiceStatusHandle,ServiceStatus)
then begin
Status:=GetLastError;
Exit;
end;
exit;
end;

SERVICE_CONTROL_INTERROGATE : ;
end;

if not SetServiceStatus (ServiceStatusHandle, ServiceStatus)
then begin
Status := GetLastError;
Exit;
end;
end;

procedure ServiceProc();stdcall;
var
Status : DWORD;
SpecificError : DWORD;
begin
ServiceStatus.dwServiceType := SERVICE_WIN32 or SERVICE_INTERACTIVE_PROCESS;
ServiceStatus.dwCurrentState := SERVICE_START_PENDING;
ServiceStatus.dwControlsAccepted := SERVICE_ACCEPT_STOP
or SERVICE_ACCEPT_PAUSE_CONTINUE;
ServiceStatus.dwWin32ExitCode := 0;
ServiceStatus.dwServiceSpecificExitCode := 0;
ServiceStatus.dwCheckPoint := 0;
ServiceStatus.dwWaitHint := 0;

ServiceStatusHandle :=
RegisterServiceCtrlHandler(ServiceName,@ServiceCtrlHandler);


ServiceStatus.dwCurrentState :=SERVICE_RUNNING;
ServiceStatus.dwCheckPoint :=0;
ServiceStatus.dwWaitHint :=0;

if not SetServiceStatus (ServiceStatusHandle,ServiceStatus)
then begin
Status:=GetLastError;
exit;
end;

// WORK HERE




end;

begin
ServiceName:= "UNLoader Service";

DispatchTable[0].lpServiceName:=ServiceName;
DispatchTable[0].lpServiceProc:=@ServiceProc;

DispatchTable[1].lpServiceName:=nil;
DispatchTable[1].lpServiceProc:=nil;

StartServiceCtrlDispatcher(DispatchTable[0]);

end.


как этот сервис взаимодействует с менеджером сервисов - понятно. Непонятно, как ему взаимодействовать например с командной строкой ?


 
Игорь Шевченко   (2003-01-13 17:37) [1]

Как обычно, GetCommandLine при запуске...


 
UNLoader   (2003-01-13 18:43) [2]

мне необходимо запускать процессы из под любого пользователя в нт. Но, как я понял, такие привилегии есть только у системы, из-под которой и запускается сервис. Допустим, я установил и запустил сервис, он уже висит у меня в списке процессов. КАК теперь, взаимодействуя с УЖЕ ЗАПУЩЕННЫМ процессом ч-з ком. строку, сделать к-л. действие?


 
ZZ   (2003-01-14 02:36) [3]

Посмотри в хелпе/MSDN про Named Pipes (CreateNamedPipe и т.д.)


 
UNLoader   (2003-01-14 14:22) [4]

а примерчик можно? а то сам боюсь не разберусь...


 
ZZ   (2003-01-15 03:57) [5]

Ты лучше попробуй разобраться,а если будут проблемы - пиши сюда :)


 
ddenisv   (2003-01-16 15:01) [6]

Удалено модератором
Примечание: У нас не ограничивают, задать свой сообственный вопрос



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

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

Наверх




Память: 0.45 MB
Время: 0.011 c
14-5758
tred
2003-02-15 20:12
2003.03.03
string


14-5727
kaif
2003-02-14 13:07
2003.03.03
Бунт роботов давно произошел?


3-5402
alexander_ua
2003-02-12 14:26
2003.03.03
Как присвоить параметру типа


7-5884
YanVal
2003-01-04 11:52
2003.03.03
Управление настройками рабочего стола


14-5771
Vint
2003-02-13 09:14
2003.03.03
UNREAL II





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