none
Visual Studio 2003マクロでの不具合(?) RRS feed

  • 質問

  • お世話になります。sa.yaと申します。
    環境:Visual Studio.NET2003、VisualC++

    ソリューションエクスプローラ画面でのマクロの記録中に
    一部の操作を受け付けなくなるのは仕様でしょうか?

    ※目的
    マクロでソリューションエクスプローラーのフォルダ構成を自動的に行いたい。
    そこでソリューションエクスプローラーの操作を記録して参考にしたい。

    ※問題の発生する手順
    ・マクロ記録中にソリューションエクスプローラでツリー上にフォルダの追加を行う

    ※現象
    ・フォルダの名称が入力できない。
     「新規作成フォルダ1」で固定されてしまう。
    ・他のフォルダを選択すると、マクロ記録中に作成したフォルダを選択できなくなる。
     (VS2003を再起動すると操作可能に戻る)
    ・作成済みのフォルダの名称変更が出来ない。
     (右クリックメニュー項目が無効になる)

    アドバイスいただければ幸いです。
    宜しく御願いします。

    2006年6月8日 7:01

回答

  • マクロの記録が使っているのがツリービューのノードに対する処理で
    あるために起因しているように思います

    ソリューションエクスプローラに対してなら 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が上手く機能しないみたいですけど??

    2006年6月12日 6:18

すべての返信

  • 症状自体は再現しますね

    回避策ですが フォルダの新規作成をしてから プロパティウィンドウで名前を変更しておけば マクロの記録を終了後出も選択可能なようです

    VS2003自体の再起動ではなく ソリューションの再読み込みで操作できるようになるみたいですよ

    回避策のプロパティウィンドウの中の操作までは記録してくれないようですけど ...

    2006年6月10日 13:09
  • お世話になります。sa.yaです。

    redfox63さん早速のレス有難う御座います。

    普通に発生する症状なのですね。残念です。

    ちなみにまだ調査中なのですが、
    記録は出来ないにせよ同じ動作(新規フォルダの追加とフォルダ名変更)
    をマクロで実現可能なのでしょうか?

    もしマクロ実行中にソリューションエクスプローラ上での操作が問題になるとすると
    根本的にマクロによるフォルダ追加は出来なくなるのですが、
    その当たりはどうなんでしょうか?

    ご存知の方いらっしゃいましたら
    アドバイスいただければ幸いです。
    宜しく御願いします。

    2006年6月12日 1:03
  • マクロの記録が使っているのがツリービューのノードに対する処理で
    あるために起因しているように思います

    ソリューションエクスプローラに対してなら 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が上手く機能しないみたいですけど??

    2006年6月12日 6:18
  • お世話になります。sa.yaです。

    早速のレス有難う御座います。

    フォルダの追加まではかろうじて記録できるようなので、
    そこから先をProjectItemの操作に変えるということですね。
    ちょっとやってみます。

    とても参考になる情報有難う御座いました。

    2006年6月13日 6:34