掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
サービスを停止するには? (ID:25714)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ついでなので、QueryStatus、StartService、ControlServiceのサンプルを作ってみました。 サービスの停止はControlServiceで行います。 procedure TForm1.QueryStatusClick(Sender: TObject); var service: TServiceStatus; mhnd, shnd: SC_HANDLE; begin mhnd := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS); if mhnd = 0 then begin Memo1.Lines.Add('OpenSCManager failed.'); Exit; end; shnd := OpenService(mhnd, PChar(Edit1.Text), SERVICE_ALL_ACCESS); if shnd = 0 then begin Memo1.Lines.Add('OpenService failed.'); CloseServiceHandle( mhnd ); Exit; end; if QueryServiceStatus(shnd, service) then begin case service.dwCurrentState of SERVICE_STOPPED: Memo1.Lines.Add('Stoped'); SERVICE_START_PENDING: Memo1.Lines.Add('Start Pending'); SERVICE_STOP_PENDING: Memo1.Lines.Add('Stop Pending'); SERVICE_RUNNING: Memo1.Lines.Add('Running'); SERVICE_CONTINUE_PENDING: Memo1.Lines.Add('Continue Pending'); SERVICE_PAUSE_PENDING: Memo1.Lines.Add('Pause Pending'); SERVICE_PAUSED: Memo1.Lines.Add('Paused'); end; end; CloseServiceHandle( shnd ); CloseServiceHandle( mhnd ); end; procedure TForm1.ServiceStartClick(Sender: TObject); var service: TServiceStatus; mhnd, shnd: SC_HANDLE; arg: PAnsiChar; begin mhnd := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS); if mhnd = 0 then begin Memo1.Lines.Add('OpenSCManager failed.'); Exit; end; shnd := OpenService(mhnd, PChar(Edit1.Text), SERVICE_ALL_ACCESS); if shnd = 0 then begin Memo1.Lines.Add('OpenService failed.'); CloseServiceHandle( mhnd ); Exit; end; arg := nil; if StartService(shnd, 0, arg) then begin //成功 Memo1.Lines.Add('Service Start OK.'); end else begin //失敗 Memo1.Lines.Add('Service Start NG.'); end; CloseServiceHandle( shnd ); CloseServiceHandle( mhnd ); end; procedure TForm1.ServiceStopClick(Sender: TObject); var service: TServiceStatus; mhnd, shnd: SC_HANDLE; arg: PAnsiChar; begin mhnd := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS); if mhnd = 0 then begin Memo1.Lines.Add('OpenSCManager failed.'); Exit; end; shnd := OpenService(mhnd, PChar(Edit1.Text), SERVICE_ALL_ACCESS); if shnd = 0 then begin Memo1.Lines.Add('OpenService failed.'); CloseServiceHandle( mhnd ); Exit; end; arg := nil; if ControlService(shnd, SERVICE_CONTROL_STOP, service) then begin //成功 Memo1.Lines.Add('Service Stop OK.'); end else begin //失敗 Memo1.Lines.Add('Service Stop NG.'); end; CloseServiceHandle( shnd ); CloseServiceHandle( mhnd ); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.