• ベストアンサー

サービスの停止

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

  • VB2008 サービス「PrintSpooler」の停止、開始方法

    VB2008 サービス「PrintSpooler」の停止、開始方法 VB初心者です どなたか教えていただけると助かります サービス「PrintSpooler」の停止後、特定のファイルを削除してから 再開するプログラムを作りたいのですがまったくわかりません どなたか教えてください よろしくお願いします ※参照すべきコンポーネントも必要であれば教えていただけると助かります

  • SQLServerサービスマネージャの開始・停止をVB6からするには?

    WindowsXP,VB6,SP6,MSDEにて開発しています。 タイトルの通りですが、 VBからSQLServerサービスマネージャの開始・停止をしたいのですが、 どういった方法がありますでしょうか? 色々考えたり調べたりしたのですが、どうしてもわかりません。 どうぞ、ご教授よろしくお願いしますm(_ _)m

  • 防御ツールサービスの停止???

    パソコン立ち上げ時に「アプリケーションの初期化に失敗しました。Windous防御ツールサービスが停止しました。サービスを開始するには、コンピューターを再起動するか、またはサービスを手動で開始する方法を・・・」となります。再起動しても、状態は変りません。手動の方法も分かりません。どうしたら、よいのでしょうか?普段使用のセキュリティは、かなり不安な状況なのでしょうか?どうそ、教えてください。

  • プリンターのサービスが電源を切ると停止してしまう

    win7を使っているのですが パソコンを起動するたびに プリンター スプーラーのサービスが停止になってしまいます。 毎回毎回手作業で開始してるのですが、 ずっと開始の状態にして、再起動しても停止しない方法はありますか? http://tantanpopo.blog.so-net.ne.jp/2012-06-28-1 これと状況は似ていますが、 私の場合、サービスを開始するだけで通常通り印刷できますが 一度電源を落とすと停止してしまいます。

  • サービスの停止(無効)に伴う不具合について

    サービスの停止(無効)に伴う不具合について 昨年末Windows 7 Home PremiumのPCを購入しました。 不要な「サービス」を停止すると、メモリの使用量が少なくなり、 より快適になるらしいと知って、ネットで調べながら おそらく不要と思われた「サービス」を「手動」に変更 もしくは「無効」にして再起動しました。 すると、「管理ツール」のすべてのプログラムが 開かなくなってしまいました。 「サービス」「イベントビューアー」「コンピューターの管理」 「サービス」「タスクスケジュラー」など。。。 そのときのエラーは「指定されたサービスは無効であるか、 または有効なデバイスが関連づれられていないため、 開始できません」というものです。 停止してはいけない「サービス」を「停止」 してしまったからこうなったのだと思いますが、 msconfig自体が起動しないため、 そもそも修正・変更ができなくなってしまいました。 また、タスクマネージャーの「サービス」から 現在「停止」になっているサービスをとにかく全部、 一旦「開始」してみようとしましたが、 大部分のサービスは「アクセスが拒否された」と出て開始できません。 こうなったのはどの「サービス」を手動や無効に 変更したから駄目になったのか また、解決するにはどうしたらよいか アドバイスいただけましたらと思います。 よろしくお願いいたします。

  • サービスの停止について

    Windows 10 64bit Pro 1803 ベースのPCで3つのサービスを開始しますが、停止します。これらの停止によって、サービス・Service Control Manager のエラーがイベントビューアに出ています。お手数でも以下のサービスが起動可能か検証のほど、よろしくお願いいたします。 サービス名は・Routing and Remote Access・Secure Socket Tunneling Protocol Service・Remote Access Connection Manager 以上です。

  • Task Scheduleサービスがすぐに停止してしまいます

    日頃、TVチューナーのタイマー録画のためにWindowsのタスクスケジュール機能を使用しているのですが、今朝方より、その実行に必要なTask Scheduleサービスが正しく動作しなくなってしまいました。 コントロールパネルの「管理ツール - サービス」を開いて調べてみたところ、スタートアップの設定は「自動」のままで、起動時に一応は開始されているものの、数分後には停止してしまうため、スケジュールが実行できないようです。 手動で再度サービスを開始しても、やはり同様に停止してしまいます。 サービスを常に「開始」状態にし続けるためには、どのようにすれば良いでしょうか?

  • Windowsサービスで、停止しているサービスの一覧を取得するに

    コマンドプロンプトにおいて、net start で開始しているサービスが表示されますが、停止しているサービスの一覧を取得するにはどうしたらよいですか? MMCサービスみたいに、開始・停止に関係なくサービスの一覧が名前順にソートされていて、右に開始かどうかが表示できればベストです。 コマンドがなければ外部コマンド、VBScriptでもOKです。

  • 停止してもいいサービス

    Vistaのホームプレミアムです。システム構成で不要サービスを停止できるようですが具体的にどのサービスを停止して良いのやら・・・。管理ツールには説明が付いていても難解です。 ではどのサービスを停止してもいいのでしょうか?おしえてください! 備考~ ・CD等自動起動で読み込みはいらない ・ビジネスに殆ど使用しない 家庭パソコンです。音は必要。インターネットをするくらいです。

  • サービスの停止ができません

    初めてVISTAを使うのですが、(Atom1.86GHz、メモリ2Gのマシンです) すぐにCPU使用率が100%、メモリも50%程度に上がり、ほとんど動いてくれません。 故障でしょうか? 本題に戻って^^; サービスを停止して改善したいのですが、 「サービスを停止できません 操作を完了できませんでした。アクセスが拒否されました。」 と表示され停止できません。 ユーザは管理者になっています。 どうすれば停止できるようになりますでしょうか? ぜひ宜しくお願い致します。

専門家に質問してみよう