◆VB 2005でのWindows Service制御 - 前準備

[ 上へ ] [ Service - VB2005 - 前準備 ] [ Service - VBA(VB6) - Win32 API編 ] [ Service - VBA(VB6) - WMI編 ] [ Service - VC++ 2005 - Win32API編 ]

始める前に、ここを読んでください

.NET Frameworkクラスライブラリはほんとに便利で、普段VC++やVBAを使っている ものとしては至れりつくせりです。もちろん、サービス関係もちゃんと用意されていて、 System.ServiceProcessアセンブリ内のSystem.ServiceProcess名前空間に ServiceControllerがサービスを表すクラスになります。

このクラスにはサービスの状態を変更できるStart(), Stop()などのメソッドが既に実装されています。これをそのまま利用すればいいのですが、 サービスが実行中でStart()メソッドを実行すると例外が発生するなど対策が必要なので、 ServiceControllerの派生クラスを作成します。

・前準備

Visual Studioのツールバーのファイル(F)→新規作成(N)→プロジェクトで以下の ダイアログボックスが表示されるので、プロジェクトの種類ペインでVisual Basic - Windows、 テンプレートペインでコンソールアプリケーションを選択して、プロジェクト名を ServiceControlとしてOKボタンをクリックしてください。

Module1.vbというファイルができてModule宣言とMain()関数のスケルトンが生成されますが、 ここでは何も実装しないで、早速ServiceControllerの派生クラスを作成します。

Visual Studioのツールバーのプロジェクト(P)→クラスの追加(C)を選択してください。

ファイル名をServiceControllerExとして追加(A)ボタンをクリックしてください。 実行するとServiceControllerEx.vbファイルに以下のクラスの宣言が生成されます。

Public Class ServiceControllerEx

End Class

・System.ServiceProcess参照設定

ServiceControllerの派生クラスであるServiceControllerExの実装の前に、 基本クラスを継承しないと話になりません。継承するにはInheritsステートメントをクラス定義の 1行目に記述すればいいのですが、基底クラスはSystem.ServiceProcessアセンブリ内に あるので、まず、これを参照設定しないといけません。

ツールバーのプロジェクト(P)→ServiceControlのプロパティ(P)で 以下の画面が現れます。

画面左の参照タブから中央にある追加(A)ボタンをクリックします。

コンポーネント名から System.ServiceProcessを 選択してOKボタンをクリックしてください。 プロジェクトのプロパティの画面で、 System.ServiceProcessが追加されていることを確認してください。

次回からはServiceControllerEx実装をしていきます。