ITproに「Windows 10のコマンドプロンプトを使い込む – UWPアプリを起動してキー操作を送れるWindows 10のバッチ」という記事が載っていました。
startコマンドで起動したMicrosoft Edgeに「sendkeys.exe」を使ってキー送信するバッチが紹介されていて、私もさっそく試そうと思ったのですが、
'sendkeys' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
試したのは【Windows 10 Pro Insider Preview x64 – 10.0.14366 ビルド 14366】環境なんですが、設定が足りていないのかビルドが違うからなのか、とりあえずsendkeys.exeが見つかりません。
sendkeys.exeを諦める
これではUWPアプリにキー送信するバッチが作れないわけですが、別にsendkeys.exeが無いならそれはそれでもう良しとして(探すの面倒くさくなりました)、別の方法で処理を実行します。
そう、古来よりの伝統手法WSHのSendKeysメソッドを使います。
・SendKeys.bat
@if(0)==(0) ECHO OFF start shell:AppsFolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge ::choice /C YN /D Y /T 2 timeout /T 2 cscript.exe //nologo //E:JScript "%~f0" %* echo Edgeが起動しました。 @pause GOTO :EOF @end var ws = new ActiveXObject("WScript.Shell"); ws.AppActivate("Microsoft Edge"); WScript.Sleep(100); ws.SendKeys("{F4}"); WScript.Sleep(300); ws.SendKeys("http://www.yahoo.co.jp/~");
バッチ内でDOSコマンドとJScriptが混在していますが、これはよく使われる手法ですね。1ファイルで処理できるので中々便利です。
上記バッチでやっていることは、
startコマンドでEdgeを起動
↓
timeoutコマンドで起動待ち
↓
(ここからJScript)
↓
Edgeのウィンドウをアクティブにする
↓
F4キーを送信してアドレスバーにフォーカス
↓
URLを送信してYahoo!を開く
といった処理で、実際の動作は下記画面になります。
おわりに
実際にバッチからEdge(UWPアプリ)を起動してキー送信してみましたが、
“Windows 10時代にこんな需要あるのか?”
というのが最大の疑問です。
もちろんDOSバッチにはまだまだ需要があると思いますが、バッチからUWP操作というのは無理があるような・・・。
(SendKeysも不安定ですし、UI Automation使った方がよほど確実)
・・・とまあ、そんなことを言うのは実に無粋。
バッチからUWPアプリを操作できる ― その事実が重要なんだ、そう思った次第です。
はじめまして。
edgeをなんとかseleniun使わずに自動化出来ないか調べていて
こちらに辿り着きました。
おかげさまで自動化出来ました。
ありがとうございます。
アプリケーションのsendkeysですが、
おそらくアプリケーションのあるフルパスが書けば動くかとおもいます。
私は結局Chromeを使うことにしたのでedgeでは使っていないのですが、
chromeでは上手く動作してくれました