Send でテキストを送ってはいけない場合

AutoIt でテキストボックスに文字を入力しようとしたときに、普通だったら

(Send("送りたい文字列"))

が使える。

が、これを使ってはいけない場合がある。

日本語を送りたいとき

IE を起動して、ホームに設定してある Google の検索欄にテキストを送ってみる。

;IE起動
Run("C:\Program Files\Internet Explorer\iexplore.exe")
WinWaitActive("Google - Internet Explorer")
;検索欄にテキストを送信
Send("送りたい文字列")

実行すると

Autoit clipput 1

うまくいってしまった・・・

これ、環境によっては日本語が正しく入力されない場合がある。

上の成功例のように正しく変換されない状態で送られてしまう場合には、今回説明するClipPutを使うべき。

送りたい文字列が長いとき

;IEを起動
Run("C:\Program Files\Internet Explorer\iexplore.exe")
WinWaitActive("Google - Internet Explorer")
;文字列を送信
Send("これだけ長い文字列を入力するなんて常識的に考えてありえないでしょう、どう思いますか")

これで送ってみる。

Autoit clipput 2

これまた正しく送られるんだけれども、一文字ずつ入力されていく様を眺めるハメになる。

長いとチカチカするので、一発でばしっと入力されてほしい。

正解は ClipPut

ClipPut は、パラメータで与えたテキストをクリップボードにコピーする関数。

これを使って

;IEを起動
Run("C:\Program Files\Internet Explorer\iexplore.exe")
WinWaitActive("Google - Internet Explorer")
;文字列を送信
ClipPut("これだけ長い文字列を入力するなんて常識的に考えてありえないでしょう、どう思いますか")
Send("^v")

結果は全く変わらないけれど、一発でバシッと入力される。コードは1行増えたものの、動作のほうには目に見えて違いが出る。

日本語が正しく送信されない、送る量が多い、そんなときは ClipPut を使いましょう。

※この記事は 2013/11/26 に別ブログTales of Verifierに書いた記事を移行したものです。