![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Dieser |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 28.3.2008 Где: Новошахтинск Репутация: нет Всего: нет |
Чтоб сервис запускался вручную или вообще был отключен.Как?
|
|||
|
||||
Dieser |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 28.3.2008 Где: Новошахтинск Репутация: нет Всего: нет |
Блин тупанул. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
Че сразу недопер.Еще по форуму искал %) |
|||
|
||||
_RIM_ |
|
|||
![]() Новичок Профиль Группа: Awaiting Authorisation Сообщений: 26 Регистрация: 7.7.2007 Где: СПб Репутация: нет Всего: нет |
Uses WinSvc;
Так останавливаем сервис: function ServiceStop(aMachine,aServiceName: string ): boolean; // aMachine это UNC путь, либо локальный компьютер если пусто var h_manager, h_svc: SC_Handle; svc_status: TServiceStatus; dwCheckPoint: DWord; begin h_manager:=OpenSCManager(PChar(aMachine),nil, SC_MANAGER_CONNECT); if h_manager > 0 then begin h_svc := OpenService(h_manager,PChar(aServiceName), SERVICE_STOP or SERVICE_QUERY_STATUS); if h_svc > 0 then begin if(ControlService(h_svc,SERVICE_CONTROL_STOP, svc_status))then begin if(QueryServiceStatus(h_svc,svc_status))then begin while(SERVICE_STOPPED <> svc_status.dwCurrentState)do begin dwCheckPoint := svc_status.dwCheckPoint; Sleep(svc_status.dwWaitHint); if(not QueryServiceStatus(h_svc,svc_status))then begin // couldn't check status break; end; if(svc_status.dwCheckPoint < dwCheckPoint)then break; end; end; end; CloseServiceHandle(h_svc); end; CloseServiceHandle(h_manager); end; Result := SERVICE_STOPPED = svc_status.dwCurrentState; end; Так проверяем его состояние: function ServiceGetStatus(sMachine, sService: string ): DWord; var h_manager, h_service: SC_Handle; service_status: TServiceStatus; hStat: DWord; begin hStat := 1; h_manager := OpenSCManager(PChar(sMachine) ,nil, SC_MANAGER_CONNECT); if h_manager > 0 then begin h_svc := OpenService(h_manager,PChar(sService), SERVICE_QUERY_STATUS); if h_svc > 0 then begin if(QueryServiceStatus(h_svc, service_status)) then hStat := service_status.dwCurrentState; CloseServiceHandle(h_svc); end; CloseServiceHandle(h_manager); end; Result := hStat; end; Она возвращает одну из следующих констант: SERVICE_STOPPED SERVICE_RUNNING SERVICE_PAUSED SERVICE_START_PENDING SERVICE_STOP_PENDING SERVICE_CONTINUE_PENDING SERVICE_PAUSE_PENDING |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |