Главная страница
    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.01 c
3-5417
Anton
2003-02-12 14:18
2003.03.03
Как можно вызвать оракловую функцию из delphi


14-5808
Lord Warlock
2003-02-13 09:39
2003.03.03
...Я рыдал...!!!


14-5868
down
2003-02-14 13:05
2003.03.03
исходники filemon


14-5832
Nickola2
2003-02-13 16:23
2003.03.03
Глупый вопрос: а где же Коля Быков?


14-5846
Johnny Smith
2003-02-11 12:12
2003.03.03
Хотелось бы комментарии, особенно от Мазута Берегового,





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