サービスの起動確認をするには?

解決


きのこ  2003-07-31 23:09:07  No: 4284

質問させて下さい。
サービスの起動確認をしたいのです。
調べて見るとQueryServiceStatusでできるようなのですが、
どうやって使うのか分かりません。
お願い致します。


にしの  2003-07-31 23:59:02  No: 4285

SCManagerを開き、Serviceを開いてから、QueryServiceStatusでステータスチェックします。

例えば、
Edit1, Memo1, Button1を貼り付け、Button1のOnClickイベントに、

procedure TForm1.Button1Click(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;

こんな感じです。
uses節に、winsvcを追加してください。


きのこ  2003-08-04 18:54:52  No: 4286

にしの様お礼が送れてすみません。
うまくいきました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加