最初はUWPSpy (https://ramensoftware.com/uwpspy) をそのまま使おうとしたんですが、Windows11でダウンロードしたバイナリが起動しないということがあって、自前でビルドを試みた記録(そもそもなぜ起動しないのかは後で判明したので全くの無駄化と思った)
起動しなかった理由
UWPSpyとは
UWPやWin UI3で作成されたアプリケーションの内部コントロールと階層関係を見られるツール。後で分かったのだが、これで内部コントロールのクラス名やNameプロパティを見たからといって、C#のUI Automation
でアクセス出来たりはせず、常にNullが返ってきた(やり方知っていたらコメントください)。
参考:https://qiita.com/ken_hamada/items/501b164374667319d270
ChatGPT出力:AutomationPeerの未実装
UI Automation を通じてUI要素にアクセスするためには、対象のコントロールに対応する AutomationPeer が実装されている必要があります。もしアプリケーション内のコントロールが AutomationPeer を持たない場合、UI Automation を介しての操作ができません。
つまり、これをクリアするためにC++の環境構築をしておくのはそれなりに有意義でした。
UWPSpyの環境構築を行う
git Clone https://github.com/m417z/UWPSpy.git
Gsudo(https://github.com/gerardog/gsudo) をインストールしておくとよい。管理者権限の切り替えが気軽に出来るコマンドを追加する。
1. ATL (Active Template Library) がインストールされているか確認
Visual Studio で ATL を使用するには、C++ のデスクトップ開発環境と共に ATL がインストールされている必要がある。
Visual Studio Installer を開き、「C++によるデスクトップ開発」ワークロードの「ATLサポート」がチェックされているか確認。
インストーラーは以下で出せる
ツール → ツールと機能を取得
以下のようにATL
が入っているチェックボックスを選択すればよい
「C/C++」 → 「全般」 → 「追加のインクルードディレクトリ」に atlapp.h のファイルが存在するパスを追加
これでatlapp.h
を読み込めるようになる、はず
vcpkg パッケージマネージャを使用して、WTL (Windows Template Library) をインストールする
※以下の手順を順番に行うことを推奨します
vcpkg をインストール
Gsudo
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.bat
vcpkg をシステムに統合
./vcpkg integrate install
WTL をインストール
vcpkg install wtl:x64-windows
プロジェクトへの vcpkg の統合
./vcpkg integrate project
大量のErrorに対処する
include *tth. 'atlapp.h':No such file or directory
や
'atlapp.h':No such file or directory UWPSpy G:\repsitory\UWPSpy\UWPSpy\stdafx.h 29
が出る。ほかにもけっこういろいろ読み込めないモジュールが出る
stdafx.h
にあるモジュールがそのままだと読み込めない
以下はEvryThing
このPathにstdafx.h
内の読み込めないvcpkg関連のモジュールを全て放り込めば動く。
不要かも?
ビルド成功時のGIFイメージ
あとがき
記録し損ねた部分もありますが、概ねこの通りにやればUWPSpyの開発環境を構築できると思います
いいね・ストックが励みになります。
悪かったらバッドボタンをお願いします。