• ベストアンサー

サービスの停止

VB6.0でAPIを使用して、サービスの停止/開始をしたいのですが、 サンプル等が少なく、APIの使い方がいまいちわかりません。 停止はできたのですが、 停止するまで待つ方法と、開始の方法がわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ここのサンプルはどうでしょうか? http://www.vbstation.net/  サンプル   VB6-サービス    2.WindowsNTサービス、デバイスの列挙(拡張版)

wan-chan
質問者

お礼

ありがとうございます。 このページにはたどり着いたのですが、 サンプルまで探せませんでした。 見つけることができました! 試してみます。

wan-chan
質問者

補足

出来ました!

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

すみません。ミス訂正で#2 を差し替えます。転記ミスです。 Public Function StopService( _   ByVal ServiceName As String, _   Optional ByVal WaitMilisecondTime As Long = 5000) As Long      ' 目 的 : サービスの停止   ' 引 数 : ServiceName サービス名 (String)   ' 戻り値 : 成功:0 / 失敗:1 (Long)      Dim ServiceList As Object   Dim Service   As Object   Dim Sql     As String   Dim lRet    As String      Sql = "Select * From Win32_Service Where Name='" & ServiceName & "'"   Set ServiceList = CreateObject("WbemScripting.SWbemLocator") _            .ConnectServer.ExecQuery(Sql)   For Each Service In ServiceList     If Service.State = "Running" Then       lRet = Service.StopService()       Sleep WaitMilisecondTime     End If   Next   StopService = IIf(lRet = 0, 1, 0)   Set ServiceList = Nothing End Function

wan-chan
質問者

お礼

ありがとうございます。 確かにAPIより楽そうですね。 こういう方法があるとは知りませんでした。 勉強になりました。 もうAPIで作成してしまったのですが、 時間があったら試してみます!

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。KenKen_SP です。 API より WMI の方が楽じゃない? Option Explicit Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long) Public Function StopService( _   ByVal ServiceName As String, _   Optional ByVal WaitMilisecondTime As Long = 5000) As Long      ' 目 的 : サービスの停止   ' 引 数 : ServiceName サービス名 (String)   ' 戻り値 : 成功:0 / 失敗:1 (Long)      Dim ServiceSet As Object   Dim Service   As Object   Dim Sql     As String   Dim lRet    As String      Sql = "Select * From Win32_Service Where Name='" & ServiceName & "'"   Set ServiceList = CreateObject("WbemScripting.SWbemLocator") _            .ConnectServer.ExecQuery(Sql)   For Each Service In ServiceList   If Service.State = "Running" Then     lRet = Service.StopService()     Sleep WaitMilisecondTime   Next   StopService = IIf(lRet = 0, 1, 0)   Set ServiceSet = Nothing End Function 待機については、サービスの状況を Service.State で調べられます。   Running (動作中)   Stopped (停止) たいていは、この2つ。その他にも   Paused (一時停止)   Continuing (続行中) がありますが。 サービス開始なら、Service.StartService() です。関数は別途作成して 下さい。エラーコードは StopService とは異なりますよ。0 で成功、 10 なら既に稼動中です。

関連するQ&A

専門家に質問してみよう