logo
Published on

AutohotkeyからChrome上でJavaScriptを実行する方法を考えた

Authors

AutohotkeyからChrome上でJavaScriptを実行する方法を考えたので紹介します。

autohotkeyはキーボードやマウスのオートメーションとして強いですが、画像認識でのクリックとかは弱い印象です。一応できることにはできるみたいですが、面倒そう。 画像認識での位置指定は現状確実性が薄いので、Windows上で動くQTとかのデスクトップソフトウェアならともかく、chrome上の操作であればJavaScriptに操作を渡すのが得策そうです。

さて、かなりスマートでないやり方にはなってしまいますが、一応autohotkeyからJavaScriptに操作を渡すのは可能そうです。

検索窓にjavascript: [スクリプト]でjavascriptが実行されるのを利用する

chromeでは検索窓でjavascriptを実行することができます。

今回の例では、wifiルーターのルーティング設定においてローカルのIPアドレスが固定でなかったために変動してしまった場合や、単にまとめてポートフォワーディングを規則的に設定する作業を自動化したい場合を想定します。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_62a65a7e-b2d7-45c2-9fdb-41db4d6645d5.gif

ctrl-Lから検索窓へ移動し、検索窓にて以下Javascriptを実行することでクリックをしています。autohotkey側では1000msくらいsleepしておけばよいでしょう。

javascript: document.querySelector('#virtualServersGrid > div > div > div.panel-tbar-container > div > a.operation-btn.btn-add').click()

JavaScriptからautohotkeyに操作を渡す

ほとんどのオートメーションはすぐに終わるようなことだと思いますが、JavaScript側での操作にかかる時間が不確定で長くなることが予想される場合、JavaScriptからautohotkeyへ操作を渡す方法を考えてあげるとします。

ぱっと思いつくのはファイルの作成、クリップボードのコピー、とかでしょうか。

autohotkeyかその他言語から異なるプロセスのautohotkeyか何かの言語でクリップボードの変更を監視して、特定の値(例えば、[識別子]: [コマンド or autohotkeyスクリプト etc])のときそれを使ってautohotkeyとかを実行、スクリプトとして処理、するといったようなことができそうです。

クリップボードの監視じゃなくても、ファイルとかサーバー立てるのでも同じようなことができそうですが楽そうなのはクリップボードかなと思う。

追記 (2021/7)

当ブログの最新記事にnode.jsからAutohotkeyを実行する方法とスクリプトについて紹介しています。

Node.jsでAutoHotkeyをスクリプティングする

node.jsのスクリプト上にwebsocketを使用してウェブページへJavaScriptを転送できるようにすることで、実質的にnode.jsを通してAutohotkey(や他のローカルなプログラム)とJavaScriptの実行を複雑にプログラム、コントロールすることができます。参考にどうぞ。