Автор Евгений Шиян задал вопрос в разделе Компьютеры, Связь
Как в Delphi остановить запустить службу помогите пожалуйстО! и получил лучший ответ
Ответ от ALeXaNDeR[гуру]
Здесь представлены две функции ServiceStart и ServiceStop, которые показывают, как пользоваться API функциями OpenSCManager, OpenService и т.д.:
function ServiceStart(aMachine, aServiceName: string ): boolean;
// aMachine это UNC путь, либо локальный компьютер если пусто
var
h_manager,h_svc: SC_Handle;
svc_status: TServiceStatus;
Temp: PChar;
dwCheckPoint: DWord;
begin
svc_status.dwCurrentState := 1;
h_manager := OpenSCManager(PChar(aMachine), nil, SC_MANAGER_CONNECT);
if h_manager > 0 then
begin
h_svc := OpenService(h_manager, PChar(aServiceName),
SERVICE_START or SERVICE_QUERY_STATUS);
if h_svc > 0 then
begin
temp := nil;
if (StartService(h_svc,0,temp)) then
if (QueryServiceStatus(h_svc,svc_status)) then
begin
while (SERVICE_RUNNING <> svc_status.dwCurrentState) do
begin
dwCheckPoint := svc_status.dwCheckPoint;
Sleep(svc_status.dwWaitHint);
if (not QueryServiceStatus(h_svc,svc_status)) then
break;
if (svc_status.dwCheckPoint < dwCheckPoint) then
begin
// QueryServiceStatus не увеличивает dwCheckPoint
break;
end;
end;
end;
CloseServiceHandle(h_svc);
end;
CloseServiceHandle(h_manager);
end;
Result := SERVICE_RUNNING = svc_status.dwCurrentState;
end;
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
Всё что, что Вам нужно, это unit WinSvc!
Источник: DelphiWorld
Как запустить sq manager в новой версии mozilla firefox?
нажмите ALT - сверху появится меню.
В меню выберите пункт "Инструменты" - "SQLite Manager"
подробнее...
Energy Management не поддерживает windows 10? lenovo
Все работает как часы на 10-ке. Где качал не помню, скинул файл на облако, если надо качай:
подробнее...
Как скачивать с Youtube? Пробовал две буквы ss после www. не выходит.
Скачать с YouTube
Откройте в нужный ролик.
В адресной строке браузера
подробнее...
Как включить WOL ( Wake of lan ) на материнской плате: Gigabyte GA-945GCMX-S2 v6.6?
Powerstate options/power option/power managment setup.
Там будет строка wake on lan.
подробнее...
не запускаеться rome 2 total war установил mod manager и поставил мод теперь игра не запускаеться
Оптимизируй прогой #yahrefs528012# после модов файлы
подробнее...
кэш второго уровня кеш 1mb по 512 кб на ядро?в dword писать 1mb или 512kb кеш выстовляеться в B или Kb ???
Вот теперь все понятно 🙂 Цитирую из справки по реестру виндовса:
Было бы странно,
подробнее...
Как скачать с YouTube?
Скачать с YouTube
Откройте в нужный ролик.
#yaimg592175#
В адресной строке
подробнее...
Как скачать фильм с video.mail.ru, или You tube
В адресной строке над видео ставь две анлийские ss.. вот точно так - сразу за www. и предложится
подробнее...
Сколько ядер у процессора Qualcomm MSM8255? ССылки на гугл прошу не надо, искал, не нашел.
Одно ядро быстрее тегры
подробнее...
Как "вытащить" музыку из видео и скачать его с ютуба? Буду рада ссылкам где скачать проги! =)))
Скачать. В Мозилле установить плагин Download Helper и можно будет качать с любых сайтов и аудио, и
подробнее...
Подскажите плагин для firefox для скачивания видео с youtobe?
проще, чем нагружать без того тормозящий браузер, дописать перед полным адресом видео две буквы
подробнее...
как скачивать с youtube?
Откройте в YouTube нужный ролик.
В адресной строке браузера добавьте буквы ss перед youtube. В
подробнее...
как скачать видео с ютуба без качивания програм и не использую сайт сейф фром нет
Internet Download Manager...по другому не знаю... это самое простое и
подробнее...