方法 : マクロでイベントを処理する
統合開発環境 (IDE: Integrated Development Environment) には 2 種類のイベントがあります。1 つはすべてのプロジェクトに適用するイベント、もう 1 つは特定の種類のプロジェクトだけに適用するイベントです。 すべてのプロジェクトの種類に適用するイベントの例としては、新しいファイルの追加、メニュー オプションの選択、ウィンドウの終了などがあります。 特定のプロジェクトの種類だけに適用するイベントの例としては、参照または Web 参照のプロジェクトへの追加があります。
このタスクは、マクロ開発環境にアクセスしてマクロ プロジェクトを作成する方法を知っていることを前提としています。 詳細については、「マクロの使用による反復操作の自動化」を参照してください。
この例では、すべての Visual Studio プロジェクトに適用されるウィンドウ イベントへの応答方法について説明します。 すべての言語に適用するイベントの詳細については、「オートメーション イベントへの応答」を参照してください。
注意
実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 ここに記載されている手順は、全般的な開発設定が適用されているものとして記述されています。 設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。 詳細については、「設定の操作」を参照してください。
言語に中立的なイベントをキャプチャするには
[MyMacros] で、新しいマクロ モジュールを作成し、CaptureEvents という名前を付けます。
新しいマクロを作成すると、EnvironmentEvents という名前のモジュールが既定で追加されます。 このモジュールによって、「オートメーション イベントへの応答」にある表で説明されているイベント オブジェクトの多くが定義されます。 EnvironmentEvents モジュールでは、次に示すように、モジュール レベルの WindowEvents 変数が既に宣言されています。
Public WithEvents windowEvents As EnvDTE.WindowEvents
EnvironmentEvents モジュールでは、マクロ IDE エディターの [クラス名] ボックスおよび [メソッド名] ボックスを使用してその変数の WindowClosing イベント処理ルーチンを作成するか、次のコードを切り取って貼り付けます。
Public Sub windowEvents_WindowClosing( _ ByVal Window As EnvDTE.Window) Handles windowEvents.WindowClosing MsgBox("You are closing the window.") End Sub
開発環境に戻り、アクティブなウィンドウを閉じます。
メッセージ ボックスが表示されます。 このメッセージは、アクティブなウィンドウを閉じるたびに表示されます。 アクティブなウィンドウを閉じるたびにメッセージが表示されるのを回避するには、イベント ハンドラーを削除します。
プロジェクトへの参照の追加
この例では、プロジェクトへの参照の追加に応答する方法について説明します。 言語固有のイベントは、Events プロパティに含まれています。 この例には、ReferencesEvents にバインドするプロジェクト固有のアプリケーションが用意されています。 また、EnvironmentEvents モジュールでハンドラーを定義することにより、グローバル レベルのイベント ハンドラーを指定できます。 詳細については、「方法 : マクロで特定の種類のプロジェクト用のイベント ハンドラーを作成する」を参照してください。この例を実行するには、Visual Studio IDE で Visual Basic または Visual C# のプロジェクトを開いておく必要があります。
Visual Basic または Visual C# のイベントをキャプチャするには
CaptureRefEvents という名前の新しいマクロ モジュールを作成します。
マクロ統合開発環境 (IDE) で、[プロジェクト] メニューの [参照の追加...] を選択し、VSLangProj への参照を追加します。 [参照の追加] ダイアログ ボックスで、[VSLangProj] を選択します。[OK] をクリックし、[追加] をクリックします。
EnvironmentEvents モジュールで、折りたたまれている "Automatically generated code, do not modify" セクションを展開し、モジュール レベルの ReferencesEvents 変数を追加します。
Dim WithEvents refEvents As VSLangProj.ReferencesEvents
エディターの [クラス名] ボックスおよび [メソッド名] ボックスを使用し、変数のイベント処理ルーチンを作成します。
Public Sub refEvents_ReferenceAdded(ByVal pReference As _ VSLangProj.Reference) Handles refEvents.ReferenceAdded MsgBox(pReference.Name & " was added to the project.") End Sub
マクロ エクスプローラーで、CaptureRefEvents モジュールを右クリックします。 ドロップダウン メニューの [新しいマクロ] を選択します。 次のコードを切り取って貼り付け、refEvents 変数を初期化します。
Public Sub ConnectRefEvents() Dim proj As VSLangProj.VSProject proj = CType(DTE.Solution.Projects.Item(1).Object, _ VSLangProj.VSProject) refEvents = proj.Events.ReferencesEvents End Sub
ConnectRefEvents マクロを保存します。
Visual Studio IDE で、Visual Basic または Visual C# のプロジェクトを開きます。
ConnectRefEvents マクロを実行します。
Visual Studio IDE で、プロジェクトへの参照を追加します。
"<Reference name> was added to the project." というテキストを含むメッセージ ボックスが表示されます。