質問させて下さい。
サービスの起動確認をしたいのです。
調べて見るとQueryServiceStatusでできるようなのですが、
どうやって使うのか分かりません。
お願い致します。
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を追加してください。
にしの様お礼が送れてすみません。
うまくいきました。
ありがとうございました。
ツイート | ![]() |