◆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実装をしていきます。