2008-09-11 6 views
1

マクロを使用してソリューションをロードすると開かれたコードウィンドウ(つまり、ドキュメントを編集するウィンドウ)を列挙する方法は?ビジュアルスタジオオートメーション:ソリューションロード時に開かれたウィンドウを列挙します。

MSVSは開かれたドキュメントを記憶しています。つまり、ソリューションを読み込むと、IDEは以前に開いたファイルを読み込みます。私がしたいのは、ソリューションロード時にそれらのウィンドウでいくつかのアクションを実行することです。

SolutionEvents_Openedハンドラでこれらのウィンドウにアクセスしようとしました。しかし、運がない - それはSolutionEvents_Openedが呼び出された時点で利用可能なウィンドウがないようです。 DTE.Documentsは空でDTE.Windows.Itemsには含まれていません。

私はいくつかのコードを必要とするように:私は、ウィンドウを列挙することが分かってきました

Private Sub SolutionEvents_Opened() Handles SolutionEvents.Opened 
    Dim window As Window = DTE.Documents.Item(?).Windows // one of the opened windows 
    ... 
End Sub 

答えて

1

一つの方法は、DocumentEvents.DocumentOpenedイベントであるが、それは解決のロード中に常にだけでなく、それを発射します。私の経験では、SolutionEvents.Openedはまったく解雇されていないようです。さもなければ、静的変数が変更される可能性があります。

Thisでも説明できます。

関連する問題