UWPSpyのビルドを通じてC++の環境構築をしてみた話

最初はUWPSpy (https://ramensoftware.com/uwpspy) をそのまま使おうとしたんですが、Windows11でダウンロードしたバイナリが起動しないということがあって、自前でビルドを試みた記録（そもそもなぜ起動しないのかは後で判明したので全くの無駄化と思った）

#### 起動しなかった理由
**Window11だったから**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/234deaf1-91dc-2456-baef-65597e579bca.png)



# 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の環境構築を行う


```javascript
git Clone https://github.com/m417z/UWPSpy.git 
```
Gsudo(https://github.com/gerardog/gsudo) をインストールしておくとよい。管理者権限の切り替えが気軽に出来るコマンドを追加する。

https://qiita.com/_masa_u/items/a799745d70b30c32a03b


## 1. ATL (Active Template Library) がインストールされているか確認
Visual Studio で ATL を使用するには、C++ のデスクトップ開発環境と共に ATL がインストールされている必要がある。
Visual Studio Installer を開き、「C++によるデスクトップ開発」ワークロードの「ATLサポート」がチェックされているか確認。

インストーラーは以下で出せる
ツール　→　ツールと機能を取得
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/fbc5925e-27e8-4027-7421-ebfa6997fdf8.png)

以下のように```ATL```が入っているチェックボックスを選択すればよい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/e3f10990-467a-1e69-b25d-55b12a8c155e.png)

### 「C/C++」 → 「全般」 → 「追加のインクルードディレクトリ」に atlapp.h のファイルが存在するパスを追加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/66ab99ac-8277-84a9-2f4c-9276ecba025e.png)


これで```atlapp.h```を読み込めるようになる、はず

# vcpkg パッケージマネージャを使用して、WTL (Windows Template Library) をインストールする
※以下の手順を順番に行うことを推奨します

## vcpkg をインストール
```bat
Gsudo
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.bat
```

## vcpkg をシステムに統合
```batchfile
./vcpkg integrate install
```

## WTL をインストール
```bat
vcpkg install wtl:x64-windows
```

## プロジェクトへの vcpkg の統合
```bat
./vcpkg integrate project
```


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/81744281-fc75-894e-2de1-ad42bebd6533.png)


# 大量のErrorに対処する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/dc0745bf-2ba1-1f58-93c5-d780c9d813a6.png)


>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
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/66a61d4e-21a8-dc4d-a700-84c3d6854f51.png)

このPathに```stdafx.h```内の読み込めないvcpkg関連のモジュールを全て放り込めば動く。
不要かも？




ビルドに成功してもこれは毎回出る。直し方分らない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/5d80ac0d-dcac-8364-da49-e8a6f18c496d.png)


ビルド成功時のGIFイメージ

![bandicam 2024-09-21 18-01-26-868_Harua.mp4.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/06903187-5913-c204-f492-bfe61633b3e5.gif)

構成マネージャーはこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145714/9b77b9f6-f013-5d85-a129-b2a67b7d51cc.png)




# あとがき
記録し損ねた部分もありますが、概ねこの通りにやればUWPSpyの開発環境を構築できると思います

いいね・ストックが励みになります。
悪かったらバッドボタンをお願いします。