<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Visual Studio Add-in</title><link>http://blogs.wankuma.com/tocchann/category/2133.aspx</link><description>Visual Studio Add-in</description><managingEditor>とっちゃん</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>とっちゃん</dc:creator><title>[WiX]VSギャラリーに登場！</title><link>http://blogs.wankuma.com/tocchann/archive/2013/12/06/328274.aspx</link><pubDate>Fri, 06 Dec 2013 13:35:00 GMT</pubDate><guid>http://blogs.wankuma.com/tocchann/archive/2013/12/06/328274.aspx</guid><wfw:comment>http://blogs.wankuma.com/tocchann/comments/328274.aspx</wfw:comment><comments>http://blogs.wankuma.com/tocchann/archive/2013/12/06/328274.aspx#Feedback</comments><slash:comments>-1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tocchann/comments/commentRss/328274.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tocchann/services/trackbacks/328274.aspx</trackback:ping><description>&lt;p&gt;アップデートがあるといわれたのでクリックしたら&lt;/p&gt; &lt;p&gt;&lt;a href="http://tocchann.wankuma.com/images/WiXVS_BEC2/image.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://tocchann.wankuma.com/images/WiXVS_BEC2/image_thumb.png" width="244" height="170"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;なんてものが出てきました。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;危うく、なんも考えずに更新しちゃうところだった。一部パスを見てるところがあるからおそらく動かないのよねぇ。。。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/tocchann/aggbug/328274.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>とっちゃん</dc:creator><title>VSの出力ウィンドウに文字列を送り込む&amp;hellip;</title><link>http://blogs.wankuma.com/tocchann/archive/2009/04/06/170856.aspx</link><pubDate>Mon, 06 Apr 2009 18:52:00 GMT</pubDate><guid>http://blogs.wankuma.com/tocchann/archive/2009/04/06/170856.aspx</guid><wfw:comment>http://blogs.wankuma.com/tocchann/comments/170856.aspx</wfw:comment><comments>http://blogs.wankuma.com/tocchann/archive/2009/04/06/170856.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tocchann/comments/commentRss/170856.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tocchann/services/trackbacks/170856.aspx</trackback:ping><description>&lt;p&gt;&lt;a title="出力ウィンドウに表示&amp;hellip;" href="http://blogs.wankuma.com/tocchann/archive/2009/04/04/170762.aspx"&gt;出力ウィンドウに表示…&lt;/a&gt; なんて書いておきながら肝心のやり方を書いていなかったので…&lt;/p&gt; &lt;p&gt;オートメーションとはなにか？なんて話から入ると、本一冊分のボリュームになるので割愛するとして…&lt;br&gt;＃オートメーションが題材の書籍は本当にあるんですけどねー絶版になって久しいｗｗｗ&lt;/p&gt; &lt;p&gt;VSのいろいろなウィンドウは、EnvDTE80.DTE2 インターフェースの ToolWindows プロパティで取得できます(2003までとは違うので注意してください)。ToolWindows インターフェースはたくさんのウィンドウを抱えていますが、この中の OutputWindow が出力ウィンドウになります。&lt;/p&gt; &lt;p&gt;ですが、出力ウィンドウは非常に特殊でほかのウィンドウと同じように扱うことができません。特にマクロで特定文字列を突っ込んでという段取りと同じようにできると思ってると泣きますので注意してください(何度アクセス違反でエラーになったことか…orz)。&lt;/p&gt; &lt;p&gt;それと、意識していない人も多いかもしれませんが、出力ウィンドウは作業ごとに中にウィンドウが出てくる仕組みになっています(一つ一つはペインと呼ぶ特殊な子ウィンドウになっている)。これを作成(または取得)して、画面出力を行います。&lt;/p&gt; &lt;p&gt;ま、あんまり細かなことを書いても面白くないので、サンプルコードを貼り付けておきます。VS2005以降ならそのまま使えるはずです(動作確認はVS2008でしかやってないですけどねｗ)。&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:34817fc4-d21c-41de-a3fe-8bb21e0ee4c2" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="vb"&gt;Private Function GetOutputPane(ByVal dte2 As EnvDTE80.DTE2, ByVal paneName As String) As OutputWindowPane
    Dim pane As OutputWindowPane
    Try
        'あるものと仮定して取得してみる
        pane = dte2.ToolWindows.OutputWindow.OutputWindowPanes.Item(paneName)
    Catch ex As ArgumentException
        '存在しないと引数が間違ってる例外が飛んでくるので、追加する
        pane = dte2.ToolWindows.OutputWindow.OutputWindowPanes.Add(paneName)
    End Try
    '指定されたペインをアクティブにする(ちらつき軽減のためこっちを先に行う)
    pane.Activate()
    '出力ウィンドウをアクティブにする
    dte2.ToolWindows.OutputWindow.Parent.Activate()
    Return pane
End Function
Sub TestOutputWindow()
    GetOutputPane(DTE, "Test").OutputString("テスト" + vbCrLf)
End Sub
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;こんな感じで使います。バッチ処理をマクロで行いたいという場合には便利ですよ。でも、VBがεπιστημηさんより駄目駄目なおいらは、マクロでも十分な機能のために、C#アドイン作りました。&lt;/p&gt;
&lt;p&gt;OutputWindow にたどりつけるまでに一日かかったとか言わないんだからね！&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/tocchann/aggbug/170856.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>とっちゃん</dc:creator><title>出力ウィンドウに表示&amp;hellip;</title><link>http://blogs.wankuma.com/tocchann/archive/2009/04/04/170762.aspx</link><pubDate>Sat, 04 Apr 2009 18:59:00 GMT</pubDate><guid>http://blogs.wankuma.com/tocchann/archive/2009/04/04/170762.aspx</guid><wfw:comment>http://blogs.wankuma.com/tocchann/comments/170762.aspx</wfw:comment><comments>http://blogs.wankuma.com/tocchann/archive/2009/04/04/170762.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tocchann/comments/commentRss/170762.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tocchann/services/trackbacks/170762.aspx</trackback:ping><description>&lt;p&gt;Visual Studio Add-in なるものを作ってます…自分の仕事の簡略化のために…&lt;/p&gt; &lt;p&gt;で、出力ウィンドウに専用ペインを作って、文字列を表示というのはできるようになったんですが、ループ回ってたりすると、終わるまで描画されないという…&lt;/p&gt; &lt;p&gt;よくある質問のような状況になってました…&lt;/p&gt; &lt;p&gt;マクロなら問題ないのになーと思って、なんか再描画コマンドないかしら?と思ってたんですが、アドインの場合はスレッド起こしてそっちでループ回せば、出力ウィンドウの表示はスレッドまたいで描画してくれるんですねー&lt;/p&gt; &lt;p&gt;.NET はスレッド作るのも単純にできるし、１行書き換えただけで臨む機能ができちゃいました…ｗ&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;ま、クラス化してたからなんですけどねｗｗｗ&lt;/p&gt; &lt;p&gt;これでようやく本題機能に注目できる…&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/tocchann/aggbug/170762.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>