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

解決


きのこ  2003-07-31 14:09:07  No: 4284  IP: 192.*.*.*

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

編集 削除
にしの  2003-07-31 14:59:02  No: 4285  IP: 192.*.*.*

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 09:54:52  No: 4286  IP: 192.*.*.*

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

編集 削除