Spy++は、Microsoftが提供するツールであり、Windowsアプリケーションが、Windows OSが提供するウインドウハンドル(HWND)を調べるために利用されます。
ウインドウハンドル(HWND)を使用することで、既存アプリケーションを変更することなく、アプリケーション上のフォームに表示されるデータを取り込んだり、書き込んだりすることができます。
ウインドウハンドル(HWND)を使用している開発プラットフォーム
Windows上で表示されるウィンドウやコントロールの多くは、ウインドウハンドル(HWND)の観点から構築されています。
- 生のWin32アプリケーション
- MFCに基づいたアプリケーション
- Windows Formに基づいたアプリケーション
- ActiveXに基づいたアプリケーション
WPFは、HWNDに基づいていません。このことから、WPF以降に登場したUWPなどの開発プラットフォームでは、ウインドウハンドル(HWND)が取得できない可能性があります。
Spy++ で実行できる作業
SPY++では、以下のことが実行できます。
- プロセス、 スレッド、 ウィンドウを含むシステム・オブジェクト間の関係のグラフィカルなツリーを表示する
- 指定された ウィンドウ、 スレッド、 プロセス、メッセージを検索する
- 選択された ウィンドウ、 スレッド、 プロセス、メッセージのプロパティを表示する
- ビューでウィンドウ、スレッド、プロセス、またはメッセージを直接選択する
- ファインダー ツール を使用して、マウス ポインターでウィンドウを選択する
- 複雑なメッセージ ログ選択パラメーターを使用して、メッセージ オプションを設定する
Spy++ に似たユーティリティ
- PView
プロセスとスレッドについての詳細が表示される
- DDESPY.EXE
ダイナミック データ エクスチェンジ (DDE) のメッセージを監視できる
Spy++の種類
Spy++は、Visual Studioをインストールする際のインストールオプションにより、一緒にインストールされ、2種類存在します。
- Spy++ (32 bit)(spyxx.exe)
32 bit プロセスで実行しているウィンドウに送信されるメッセージを表示する。
たとえば、Visual Studio は 32 ビット プロセスで実行されるため、Spy++ を使用して、 ソリューション エクスプローラーに送信されるメッセージを表示できます。
Visual Studio におけるほとんどのビルドの既定の構成は 32 ビット プロセスで実行されるため、Visual Studio の [ツール] メニューで使用できる Spy++ はこのバージョンです。
- Spy++ (64 bit) (spyxx_amd64.exe)
Spy++ (64 bit) (spyxx_amd64.exe)
64 bit プロセスで実行しているウィンドウに送信されるメッセージを表示する。
たとえば、64 ビットのオペレーティング システムでは、メモ帳は 64 ビット プロセスで実行されます。 したがって、Spy++ (64 ビット) を使用して、メモ帳に送信されるメッセージを表示できます。
通常、Spy++ (64 ビット) は、..\\Common7\Tools\spyxx_amd64.exe にあります。
どちらのバージョンの Spy++ も、コマンドラインから直接実行できます。
Spy++ (64 ビット) のファイル名には "amd" が含まれますが、すべての x64 Windows オペレーティング システムで動作します。
Spy++を実行する
Spy++ は、Visual Studio またはコマンド プロンプトから起動できます。
Spy++ を起動すると、コンピューターを変更をするためのアクセス許可を求めるメッセージが表示される場合は、 [はい] を選択します。
Spy++ のインスタンスは 1 つだけ実行できます。
SPY++を使用するための必須コンポーネント
Visual Studioで、[ツール] > [ツールと機能を取得]を選択します。
[個別のコンポーネント]タブを選択し、下にスクロールし、[ディバッグとテスト]の項目から[C++のプロファイル ツール]にチェックを入れます。
右側の[インストールの詳細]枠から、[C++コア機能]にチェックが入っていることを確認します。チェックが入っていなかったらチェックを入れます。
[ダウンロードしながらインストールする]をクリックします。
これで、SPY++を使用する準備が出来ました。
Visual StudioからSPY++を起動する
Visual Studioを再起動し、[ツール]メニューに[SPY++]の項目が現れます。
Spy++ は独立して実行されるため、起動した後で Visual Studio を閉じることができます。
コマンドプロンプトから、SPY++を起動する
- コマンド プロンプト ウィンドウで、ディレクトリを spyxx.exe が含まれるフォルダーに変更します。 通常、このフォルダーへのパスは ..\\Common7\Tools\ です。
- 「spyxx.exe」と入力します。64 bit バージョンの場合は、「spyxx_amd64.exe」と入力します。
ウインドウハンドル(HWND)を使用して既存のアプリケーションの情報を活用するプログラムを作成する
APIなど外部のプログラムと連携する仕組みが存在しないアプリケーションと連携するアプリケーションを作成する場合、ウインドウハンドル(HWND)を使用すると、連携先のアプリケーションを変更する必要がないので、開発の負荷をかなり減らすことができます。
- C#で他アプリケーションを操作するための基礎知識
Windows 7やWindows 8で使われていた電卓アプリを操作する
- C#で他アプリケーションを外部から操作する
メモ帳を操作する