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に書いた記事を移行したものです。

ABOUTこの記事をかいた人

都内でテストエンジニア&ブロガーをやっている@yoshikiitoです。 ソフトウェアエンジニアの学習方法や成長するための考え方、会社に依存せず自分の力で生きていけるエンジニアになる方法などについて興味があります。 こういった方法や考え方、自分が試したことなどをブログを通じて発信します。 仕事は主にソフトウェアテストやテスト自動化。 趣味は浦和レッズと読書と技術書を買って積むこと。 技術評論社から本を出すのが夢