あるサービスが起動しているかどうかを検知して動作を分岐するにはどうすればよろしいのでしょうか。
開発マシンはXP、利用者マシンはXP、Vista
delphi5,6,ターボいずれかの環境で開発します。
サービスの状態は QueryServiceStatus() で取得できます。
・OpenSCManager()
・OpenService()
・CloseServiceHandle()
等も一緒に使う必要がありますね。
場合によっては EnumServicesStatus() も使わなくてはならないかもしれません。
・StartService()
・ControlService()
を使うと、サービスの状態を変更できます。
(開始/停止/一時停止/再開)
# WinSvc を uses して下さい。
サービスの一覧取得と開始と停止
http://khe00221.image.coocan.jp/index.php?FrontPage%2FTips2%2F%A5%B7%A5%B9%A5%C6%A5%E0%20-%20%A5%B5%A1%BC%A5%D3%A5%B9%2F%B0%EC%CD%F7%BC%E8%C6%C0%A4%C8%B3%AB%BB%CF%A4%C8%C4%E4%BB%DF
ProcessServiceUnit.pas
http://khe00221.image.coocan.jp/index.php?FrontPage%2FUnit%2FProcessServiveUnit.pas
PrivilegeUnit.pas
http://khe00221.image.coocan.jp/index.php?FrontPage%2FUnit%2FPrivilegeUnit.pas