トップ回答者
Visual Studio 2003マクロでの不具合(?)

質問
-
お世話になります。sa.yaと申します。
環境:Visual Studio.NET2003、VisualC++ソリューションエクスプローラ画面でのマクロの記録中に
一部の操作を受け付けなくなるのは仕様でしょうか?※目的
マクロでソリューションエクスプローラーのフォルダ構成を自動的に行いたい。
そこでソリューションエクスプローラーの操作を記録して参考にしたい。※問題の発生する手順
・マクロ記録中にソリューションエクスプローラでツリー上にフォルダの追加を行う※現象
・フォルダの名称が入力できない。
「新規作成フォルダ1」で固定されてしまう。
・他のフォルダを選択すると、マクロ記録中に作成したフォルダを選択できなくなる。
(VS2003を再起動すると操作可能に戻る)
・作成済みのフォルダの名称変更が出来ない。
(右クリックメニュー項目が無効になる)アドバイスいただければ幸いです。
宜しく御願いします。
回答
-
マクロの記録が使っているのがツリービューのノードに対する処理で
あるために起因しているように思いますソリューションエクスプローラに対してなら Projectオブジェクトに
対して操作を行うといった手法になるかと思いますマクロの記録で生成されるコードが
DTE.ActiveWindow.Object.GetItem("TestMacro\TestMacro\TestMacro.フォルダの新規作成1").Select(vsUISelectionType.vsUISelectionTypeSelect)
と言った具合になると思います
ここの DTE.ActiveWindow.ObJect.GetItem()で取得されるのが
UIHierarchyItem オブジェクトになっているため名前の変更が
出来ないのかも知れません
ツリービューノードの Nameプロパティは ReadOnly となってますからProjectItemオブジェクトの Nameプロパティなら設定も可能なようです
DTE.ActriveSolutionProjects(0).ProjectItemsで取得できる
ProjectItemsコレクションから 新規追加をしたフォルダを探して見てください# ProjectItemsの AddFolderが上手く機能しないみたいですけど??
すべての返信
-
マクロの記録が使っているのがツリービューのノードに対する処理で
あるために起因しているように思いますソリューションエクスプローラに対してなら Projectオブジェクトに
対して操作を行うといった手法になるかと思いますマクロの記録で生成されるコードが
DTE.ActiveWindow.Object.GetItem("TestMacro\TestMacro\TestMacro.フォルダの新規作成1").Select(vsUISelectionType.vsUISelectionTypeSelect)
と言った具合になると思います
ここの DTE.ActiveWindow.ObJect.GetItem()で取得されるのが
UIHierarchyItem オブジェクトになっているため名前の変更が
出来ないのかも知れません
ツリービューノードの Nameプロパティは ReadOnly となってますからProjectItemオブジェクトの Nameプロパティなら設定も可能なようです
DTE.ActriveSolutionProjects(0).ProjectItemsで取得できる
ProjectItemsコレクションから 新規追加をしたフォルダを探して見てください# ProjectItemsの AddFolderが上手く機能しないみたいですけど??