チュートリアル : ウィザードの作成

アドイン ウィザードなどのウィザードは、ユーザーに一連の操作を実行させ、複雑なタスク、繰り返し行うタスク、または難しいタスクを完了できるようにするプログラムです。たとえば、Windows では、ウィザードを使用して、ネットワーク リソースやプリンターなどに接続できます。

Visual Studio のウィザードでは、通常、ユーザーの入力を要求する一連の質問が行われ、入力結果を使用してコードが生成されます。ただし、ウィザードには、必ずしもユーザー インターフェイス (UI: User Interface) が表示されるとは限りません。ウィザードは、背後 (ユーザーからは見えない部分) でコードを生成するようにプログラミングできます。

ウィザードには、次の 3 種類があります。

  • 新しいプロジェクト ウィザード - その名前のとおり、特定の種類のプロジェクト用の新しいコードを作成する場合に使用します。このコードにより、ユーザーがどこから独自のコードを追加すればいいのかを示す開始点が提供されます。この種類のウィザードが最も一般的に使用されます。

  • 新しい項目の追加ウィザード - Web フォーム、テキスト ファイル、HTML ページ、XML ページなどの新しい項目をプロジェクトに追加する場合に使用します。

  • カスタム ウィザード - ダイアログ ボックスから呼び出されません。代わりに、アドイン、マクロ、または他の種類のコードから直接呼び出されます。UI は表示される場合もあれば、表示されない場合もあります。どちらの場合にも、コードが生成されます。この種のウィザードは、最も使用頻度の低いウィザードです。

ウィザードの種類に関係なく、すべてのウィザードには共通する特徴があります。

  • ウィザードは、IDTWizard インターフェイスを実装し、関連付けられた Execute メソッドを含む .NET オブジェクトです。このメソッドには、ウィザードで実行されるコードが含まれています。

  • すべてのウィザードは、.vsz ファイルを使用して Visual Studio に表示されます。

  • すべてのウィザードは、コードを生成するか、何か他のタスクを実行します。

作成するウィザードの要素の外観をカスタマイズできます。ほとんどの場合、ウィザードは、1 つ以上のウィンドウ、つまり、ページで構成されています。ページには、説明的なイメージ (ページの上部や左側など)、ラベルの説明、および指示があり、[次へ][戻る] などのナビゲーション コントロールを配置できる領域があります。

Visual C++ のウィザードを作成するプロセスは、標準の Visual Studio ウィザードを作成するプロセスとは少し異なります。Visual C++ を対象としたウィザードの作成方法の詳細については、「ウィザードのデザイン」および「カスタム ウィザードの作成」を参照してください。

[!メモ]

実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。ここに記載されている手順は、全般的な開発設定が適用されているものとして記述されています。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。

基本的なウィザードの例

Visual Studio アドイン ウィザード

この画像は、アドイン ウィザードのパネル、つまりユーザーが一連の手順を実行してアドインを作成できる新しいプロジェクトという種類のウィザードを示しています。ウィザードの外観はカスタマイズできますが、アドイン ウィザードは、標準的な種類のウィザードのスタイルを示す例として適しています。完成したウィザードは、[新しいプロジェクト] ダイアログ ボックスまたは [新しい項目の追加] ダイアログ ボックスで使用できるテンプレートになります。

基本的なウィザードを作成し、必要に応じてカスタム アイコンを追加する方法を次に示します。

Visual Basic および Visual C# で基本的なウィザードを作成するには

  1. Visual Studio を管理者として実行します。ウィザードを登録するには、レジストリを更新する必要があります。そのため、この特権が必要になります。

  2. MyNewWizard という名前の新しいクラス ライブラリ プロジェクトを作成します。

  3. EnvDTE および EnvDTE80 への参照をプロジェクトに追加します。

    これを行うには、プロジェクトを右クリックし、[参照の追加] をクリックします。[参照の追加] ダイアログの [.NET] タブで、[EnvDTE] および [EnvDTE80] をクリックし、[OK] をクリックします。

クラス モジュールでは、EnvDTE および EnvDTE80 への参照を使用し、IDTWizard インターフェイスを実装します。この Visual C# の例では、System.Windows.Forms および System.Runtime.InteropServices への参照も追加する必要があります。

Imports EnvDTE
Imports EnvDTE80
Public Class Class1
    Implements IDTWizard
using System;
using System.Collections.Generic;
using System.Text;
using EnvDTE;
using EnvDTE80;
using System. Windows.Forms;

using System.Runtime.InteropServices;

namespace MyNewWizard
{

[ComVisible(true)]

[Guid("20184B81-7C38-4E02-A1E3-8D564EEC2D25"),

ProgId("MyNewWizard.Class1")]

    public class Class1 : IDTWizard
    {
    }
}

Implements ステートメントを Visual Basic に追加するときに、カーソルを行末に配置して Enter キーを押すと、Execute メソッドのプロシージャが自動的に作成されます。ただし、Visual C# の場合は、手動で Execute プロシージャを追加する必要があります。

public class Class1 : IDTWizard
    {
    public void Execute(object Application, 
        int hwndOwner, ref object[] contextParams, 
        ref object[] customParams, 
        ref EnvDTE.wizardResult retval)
  1. ウィザードで実行するコードを Execute プロシージャに追加します。この例では、単に単純なメッセージ ボックスを追加します。

    次のようなコードになります。

    Imports EnvDTE
    Imports EnvDTE80
    
    Public Class Class1
        Implements IDTWizard
    
        Public Sub Execute(ByVal Application As Object, ByVal _
        hwndOwner As Integer, ByRef ContextParams() As Object, ByRef _
        CustomParams() As Object, ByRef retval As EnvDTE.wizardResult) _
        Implements EnvDTE.IDTWizard.Execute
            MsgBox("The wizard is now running.")
        End Sub
    End Class 
    
    using System.Text;
    using EnvDTE;
    using EnvDTE80;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    
    namespace MyNewWizardCS
    {
        public class Class1 : IDTWizard
        {
    
        public void Execute(object Application, 
            int hwndOwner, ref object[] contextParams, 
            ref object[] customParams, 
            ref EnvDTE.wizardResult retval)
        {
            MessageBox.Show("The wizard is now running.");
        }
    }
    
    }
    

    Execute プロシージャは、ウィザードの起動時に呼び出されます。

  2. ソリューション エクスプローラーでプロジェクトを右クリックし、[プロパティ] をクリックして [プロジェクトのプロパティ] ページを開きます。[ビルド] タブをクリックし、ページ下部にある [COM 相互運用機能の登録] チェック ボックスをオンにします。

  3. AssemblyInfo.cs ファイルで、ComVisible 属性を見つけて true に設定します。

  4. [ビルド] メニューの [ソリューションのビルド] をクリックすることにより、プロジェクトをビルドしてクラス ライブラリを作成します。

  5. ウィザードの .vsz テキスト ファイルを MyNewWizard.vsz という名前で作成します。

    これを行うには、既存の .vsz ファイル (<Visual Studio Install Directory>\VC#\CSharpProjectItems\Windows Forms にある .vsz ファイルなど) のコピーを作成し、その名前を "MyNewWizard.vsz" に変更します。

    .vsz ファイルは、Visual Studio がウィザードを認識して、[新しいプロジェクト] ダイアログ ボックスまたは [新しい項目の追加] ダイアログ ボックスにそのウィザードを表示できるようにするテキスト ファイルです。Wizard パラメーターは、プロジェクトの progID (Project.Classname) または GUID に設定する必要があります。詳細については、「ウィザードを起動する .vsz ファイルの構成」を参照してください。

    [!メモ]

    オプションとして、ウィザード用に VSDir ファイルを作成することもできます。このファイルには、[新しいプロジェクトの追加] ダイアログ ボックスまたは [新しいファイル] ダイアログ ボックスでウィザードの説明として表示される情報が含まれています。また、このファイルを使用すると、アイコンを指定し、その位置を一覧内で変更することもできます。詳細については、「.vsdir ファイルを使用した [項目の追加] ダイアログ ボックスおよび [新しいプロジェクト] ダイアログ ボックスへのウィザードの追加」を参照してください。

  6. MyNewWizard.vsz の内容を次の内容に置き換えます。

    VSWizard 7.0
    Wizard=MyNewWizard.Class1
    Param=First Item
    Param=Second Item
    
  7. 新しい .vsz ファイルを、ウィザードを表示するディレクトリに保存します。

    この例では、ウィザードが Visual Basic プロジェクトの [新しい項目の追加] ダイアログ ボックスに表示されるようにします。これを行うには、.vsz ファイルを、<Visual Studio インストール ディレクトリ>\VB\VBProjectItems というディレクトリに保存します。

  8. Visual Studio を終了し、再起動します。

    これにより、Visual Studio で新しい .vsz ファイルが読み取られます。

  9. 新しい Visual Basic プロジェクト (Windows アプリケーション プロジェクトなど) を作成します。

  10. プロジェクトを右クリックし、[項目の追加] をポイントして、[新しい項目] をクリックします。

    [新しい項目の追加] ダイアログ ボックスに新しいウィザード (MyNewWizard) が表示されます。

  11. ウィザードをクリックし、[追加] ボタンをクリックします。

    "ウィザードは現在実行中です" というメッセージが表示されます。

新しいウィザードのカスタム アイコンを表示するには

  • 基本のファイル名が .dll ファイルと同じで .ico 拡張子の付いたアイコン ファイルを、ウィザード ファイルと同じディレクトリに配置します。

    たとえば、ウィザード名が MyNewWizard.dll の場合、.ico ファイルの名前は MyNewWizard.ico となります。

    または

  • VSDir ファイルを作成した場合は、アイコン (.ico) ファイルへのパスを指定します。

参照

処理手順

方法 : アドインを作成する

関連項目

IDTWizard

Visual Studio のコマンドおよびスイッチ

概念

オートメーション オブジェクト モデルの階層図

.vsdir ファイルを使用した [項目の追加] ダイアログ ボックスおよび [新しいプロジェクト] ダイアログ ボックスへのウィザードの追加

ウィザードを起動する .vsz ファイルの構成

その他の技術情報

アドインおよびウィザードの作成