- ベストアンサー
サービスの停止
VB6.0でAPIを使用して、サービスの停止/開始をしたいのですが、 サンプル等が少なく、APIの使い方がいまいちわかりません。 停止はできたのですが、 停止するまで待つ方法と、開始の方法がわかりません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ここのサンプルはどうでしょうか? http://www.vbstation.net/ サンプル VB6-サービス 2.WindowsNTサービス、デバイスの列挙(拡張版)
その他の回答 (2)
- KenKen_SP
- ベストアンサー率62% (785/1258)
すみません。ミス訂正で#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
お礼
ありがとうございます。 確かにAPIより楽そうですね。 こういう方法があるとは知りませんでした。 勉強になりました。 もうAPIで作成してしまったのですが、 時間があったら試してみます!
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。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 なら既に稼動中です。
お礼
ありがとうございます。 このページにはたどり着いたのですが、 サンプルまで探せませんでした。 見つけることができました! 試してみます。
補足
出来ました!