Function Reference

ControlSend

コントロールに文字列を送信します。

ControlSend ( "title", "text", controlID, "string" [, flag] )

 

パラメータ

title アクセスするウィンドウの名前
text アクセスするウィンドウのテキスト
controlID 対象となるコントロール。Controls参照。
string コントロールに送信する文字列
flag [オプション] どのように"キー"を送信するかを変更します。
  flag = 0 (デフォルト) :SHIFTを意味する+や→を意味する{LEFT}のような特殊な文字をテキストが含んでる場合。
  flag = 1 :キーはそのまま送信されます。

 

返し値

成功 1を返します。
失敗 ウィンドウ/コントロールが見つからなかった場合0を返します。

 

注意

ControlSendはSendと同様の処理をおこないます。ただしアクティブなウィンドウではなく指定したウィンドウ/コントロールに直接キーストロークを送ることができます。

ControlSendはコマンドプロンプトに対してだけは正常に動作しません。コマンドプロンプトは通常のウィンドウとは違う方法で動いているからです (キーストロークメッセージを受信するのではなくフィジカルステイトを調べているようです)。通常のウィンドウに対してはControlSendはただのSendより信頼性が高い方法です。-もちろんCtrl、Shift、Altキーなどを送信できます。

Sendのヘルプでも言及したようにCAPS LOCKが有効だったりShiftキーが使用されている時に異なった文字を送信するキーボードではうまくキーストロークをシミュレートできません。たとえばチェコ語キーボードです。有効な回避方法はControlSetTextを使うことです。

最初にコントロールにControlFocusコマンドでフォーカスをあわせる必要がある場合があります。特に同じスクリプト上で作ったcontrolIDに操作する場合です。

Opt("SendKeyDelay",...) はキーストロークのキーの間の時間間隔を変更します。
Opt("SendKeyDownDelay",...) はキーストロークのキーが押されてから離されるまでの時間の長さを変更します。

 

関連

ControlCommand, Send, ControlSetText, ControlFocus, SendKeyDelay (Option), SendKeyDownDelay (Option)

 


ControlSend("[CLASS:Notepad]", "", "Edit1", "This is a line of text in the notepad window")