.NET TIPS

実行中の.NETアプリケーションのオブジェクト構造などを調査/操作するには?

デジタルアドバンテージ 一色 政彦
2007/06/14

 Visual Studio .NET 2002/2003やVisual Studio 2005(以降、VS 2005)には、Windowsアプリケーションのウィンドウの親子関係やウィンドウ・ハンドルなどを調べるために「Spy++」というツールが付属している(インストール時のオプション設定の内容によってはインストールされない場合もある)。

 例えば、VS 2005では、[スタート]メニューから[すべてのプログラム]−[Microsoft Visual Studio 2005]−[Visual Studio Tools]−[Spy++]を選択するとこれが起動する。次の画面は実際にSpy++を起動したところだ。

Spy++の実行例
Internet Explorerを起動した状態でSpy++を立ち上げると、このようにInternet Explorerのウィンドウ構造を調べられる。

 この画面の例ではInternet Explorerを起動した状態でSpy++を起動しているが、Spy++ではこのようにして実行中のWindowsアプリケーションの構造をWin32レベルで調べられる。

 Spy++は.NETにより作成したWindowsアプリケーション(以下、.NET Winアプリ)に対してももちろん有効だが、このようなWin32レベルでのネイティブなウィンドウ構造とは別に、.NET Winアプリには、フォーム(Formクラス)や各コントロール(Controlクラスの各種派生クラス)などのオブジェクトで構成される、マネージ・コード・レベルでのオブジェクト構造(フォームやコントロールの親子関係)が存在する。そういった.NET Winアプリのオブジェクト構造やその各プロパティ内容を調べるためのツールが「Managed Spy」だ。

 ただしこのManaged SpyはVisual Studioの付属ツールではなく、MSDN Magazineの記事からダウンロードして利用するツールである。実際にダウンロードするには、次の記事の上部にある「Get the sample code for this article.」というリンクをクリックして、サンプル・コードごとダウンロードしてほしい。

 サンプル・コードは圧縮ファイル(ManagedSpy.exe)となっているので、これを実行して任意の場所に解凍すると、解凍されたフォルダ内に「ManagedSpy.exe」があるはずだ。これがManaged Spyの本体なので、ダブルクリックするなどして実行してほしい。

 次の画面は実際にManaged Spyを実行したところである。

Managed Spyの実行例
時計アプリケーション「DigitalClock」を起動した状態でManaged Spyを立ち上げると、このように.NETで作成されたWindowsアプリケーションのオブジェクト構造や各プロパティの内容を調べられる。また、[Properties]ウィンドウでプロパティの値を変更すれば、実行中の.NETアプリケーションに即座に反映される。

 この画面の例では、.NETで作成した時計アプリケーション「DigitalClock」をあらかじめ実行しておき、その状態でManaged Spyを実行している。するとこのように、実行中の.NET Winアプリ(この例では「DigitalClock」)が自動認識され、Managed Spyの左のツール表示部分に現れる。

 そのアプリケーション項目の配下には、内部のフォームや、さらにその内部のコントロールなどの項目が表示される。いずれかの項目を選ぶと、右側の[Properties]ウィンドウにその項目に関するプロパティ内容が表示される。このプロパティ内容を変更すると、実行中のアプリケーションに即座に反映されるので、ちょっとプロパティを変更して動作を検証したいケースなどで有用だろう(このプロパティ変更では、物理的な.EXE/.DLLファイルの内容は変化しない)。End of Article

カテゴリ:開発環境&ツール 処理対象:ツール

この記事と関連性の高い別の.NET TIPS
Windowsフォームで簡単に画像を表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間