Joy to the world

とある中小企業のしがない技術者でクリスチャンな人が書く日記。実はメビウス症候群当事者だったり、統合失調症のパートナーがいたりする。

WPFアプリ自動化手法

仕事柄、アプリケーションの自動化をやることが多々あるのだが、今まではWin32API叩いたり、AutoITを使ったりしてきた。

Win32APIネイティブのアプリだったり、.NET Frameworkで作ったWinFormsアプリだったりならSpy++とかAutoIt Infoで要素が取得できるのだが、WPFで作られたアプリはこれができない。

実は長らくこの問題に悩まされており、今まではマウス座標を指定するとか、なんかそういった方法でごまかしてきた。しかしながら、最近は流石にWPFとかUWP(こっちはもう死に体かもしれない)が増えてきて、そろそろモダンなアプリでも、要素を指定してクリックしたいなぁと思っていた。

こんな要望が無いのか、はたまた当たり前なのかはわからないが、ググってみてもこれと言った情報がない。一時期RPAツールがもてはやされたが、そういったツールが出来ている時点で、WPFを自動化する方法もあるはずなのだが。

Inspector

兎にも角にも、まずはSpy++のWPF版みたいなのを探さねばならない。これは

C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\inspect.exe

を使えば良い(10.0.19041.0はビルド番号)。時々挙動が怪しいが、まあとりあえず使える。

C#での自動化

色々と調べたところ、どうもUI Automationを使えば良さそうだ。これならレガシーなOSでもそれなりに動きそうなので安心。

結論

Inspectorで調べて、UI Automationでよろしくやれば色々と捗りそうだ。多分これからも自動化プログラムを作る機会は増えると思うので、今度ためしてみる。