キーストロークやマウスクリックのシミュレーションをアクティブウィンドウに送信します。
Send Keys SendText Keys SendInput Keys SendPlay Keys SendEvent Keys
型:文字列
送信するキーのシーケンス。
デフォルトでは(つまり、SendTextもRawモードも Textモードも使用しない場合)、文字^+!#{}
は特別な意味を持つ。文字^+!#
は、修飾キーCtrl、Shift、Alt、Winを表します。次のキーにしか影響しません。対応する修飾キーを単独で送信する場合は、キー名を中括弧で囲んでください。キーを押したり離したりするだけなら、以下のようにキー名の後に "down"や "up"をつけてください。
記号 | キー | プレス | リリース | 例 |
---|---|---|---|---|
^ | {Ctrl} | {Ctrl down} | {Ctrl up} | Send "^{Home}" Ctrl+Homeを押す |
+ | {Shift} | {Shift down} | {Shift up} | Send "+abC" は、テキスト「AbC」を送信しますSend "!+a" は、Alt+Shift+Aを押します |
! | {Alt} | {Alt down} | {Alt up} | Send "!a" は、Alt+Aを押します |
# | {LWin} {RWin} |
{LWin down} {RWin down} |
{LWin up} {RWin up} |
Send "#e" は、Winを押しながらEを押します |
注意:Shiftを送ると大文字が出るように、A
はプログラムによってはa
とは違う効果が出ます。例えば、!A
は Alt+Shift+A、および、!a
は、Alt+Aを押します。迷ったときは小文字を使います。
文字{}
は、キー名やその他のオプションを囲んだり、特殊文字を文字通りに送信するために使用します。例えば、{Tab}
は Tab、{!}
は文字通りのエクスクラメーションマークです。
ASCII文字(a-zまたはA-Z)を中括弧で囲むと、その文字が現在のキーボードレイアウトに存在しない場合でも、対応する仮想キーコードとして送信されます。つまり、Send "a"
は"a"が出るが、Send "{a}"
をと"a"が出るかどうかは、キーボードの配列によって異なります。詳しくは、下記の備考をご覧ください。
Send:デフォルトでは、SendはSendInputと同義ですが、SendModeによってSendEventやSendPlayと同義にすることができます。
SendText:Sendと似ていますが、Keysのすべての文字が解釈され、文字通り送信されます。詳しくは、「テキストモード」をご覧ください。
SendInput、SendPlay:SendInputとSendPlayはSendEventと同じ構文を使用しますが、一般的により高速で信頼性が高いです。また、送信中にキーボードやマウスを操作した場合、バッファリングが行われるため、ユーザーのキー入力と送信中のキー入力が混在することを防ぐことができます。SendModeを使用することで、SendをSendInputやSendPlayと同義にすることができます。各モードの詳細については、後述のSendInputおよびSendPlayを参照してください。
SendEvent:SendEventは、Windowsのkeybd_event関数(詳細はMicrosoft Docsを検索)を使用してキーストロークを送信します。キー入力の送信速度は、SetKeyDelayで決定されます。SendModeを使用することで、SendをSendEventまたはSendPlayと同義にすることができます。
以下のモードは、Keysの文字の解釈や、Send、SendInput、SendPlay、SendEvent、ControlSendなどのキー送信関数の動作に影響を与えます。これらのモードは、Keysの{x}
として指定する必要があり、xはRaw、Text、Blindのいずれかです。例えば、{Raw}
です。
Rawモードは{Raw}
で有効にすることができ、{Enter}
を Enter、^c
を Ctrl+Cなどに変換するのではなく、特殊文字^+!#{}
を含む後続のすべての文字が文字通り解釈されるようになります。例えば、Send "{Raw}{Tab}"
は、Tabの代わりに{Tab}
を送信します。
Rawモードは、エスケープシーケンスや 式の解釈には影響しません。例えば、Send "{Raw}``100`%"
は、文字列`100%
を送信します。
テキストモードは{Text}
、SendText、ControlSendTextのいずれかで有効にすることができ、Rawモードと似ていますが、文字(`r
、`n
、`t
、`b
以外)をキーコードに変換しようとしないことを除いて、残りのすべての文字に対してフォールバックメソッドが使用されます。SendEvent、SendInput、ControlSendについては、文字が正しい修飾子の状態に依存することが少なくなるため、信頼性が向上する。このモードは、ブラインドモードと組み合わせることで、修飾キーを離さないようにすることができます:Send "{Blind}{Text}テキスト"
。ただし、アプリケーションによっては、修飾キーが解放されている必要があります。
`n
、`r
、`r`n
は、デフォルトの動作やRawモードが`r`n
を2つのEnterに変換するのとは異なり、すべて1つのEnterに変換されます。`t
は Tabに、`b
は Backspaceに変換されますが、それ以外の文字は変換されずに送信されます。
ブラインドモードと同様に、テキストモードはSetStoreCapsLockModeを無視し(つまり、CapsLockの状態は変化しない)、Winが解除されるのを待つことはありません。これは、テキストモードが通常CapsLockの状態に依存せず、システムのWin+Lホットキーをトリガーすることができないためです。ただし、Keysが {Text}
または{Blind}{Text}
で始まる場合のみ適用されます。
ブラインドモードは{Blind}
で有効にすることができ、通常、期待通りに動作させるために自動的に行われる多くのことを無効にすることで、スクリプトをよりコントロールできるようにします。ブラインドモードを有効にするには、文字列の最初の項目として{Blind}
を指定する必要があります。以下のような効果があります:
+s::Send "{Blind}abc"
は、ユーザーがShiftを押しているため、abc ではなく ABC を送信します。^space::Send "{Ctrl up}"
は、ユーザーが物理的にCtrlを押したままであれば、自動的にCtrlを押し下げますが、^space::Send "{Blind}{Ctrl up}"
では、物理的には下がっていても、論理的にはCtrlが上がっていることがあります。"Blind"の後に1つ以上の修飾記号(!#^+
)を付けると、必要に応じてそれらの修飾記号が自動的に解除されるようになる場合があります。例えば、*^a::Send "{Blind^}b"
は、Ctrl+Shift+Bではなく、Shift+Bを送信しますが、Ctrl+Shift+A が押し付けられた場合。{Blind!#^+}
は、必要に応じてすべてのモディファイアを解除することができますが、Blindモードの他の効果を有効にします。
ブラインドモードは、キーを再マッピングする際に内部で使用されます。例えば、a::b
の再マッピングでは、次のようになります:1)「a」と入力したときに「b」、2) 大文字の「A」と入力したときに「B」、3) Ctrl+Bと入力したときにCtrl+A。ソースキーに修飾子が指定されている場合(ソースキーが大文字の場合はShiftを含む)、上記のように除外される。例えば、^a::b
は、Ctrl+Bではなく、通常のBを出力します。
{Blind}
はSendTextやControlSendTextではサポートされていませんので、代わりに{Blind}{Text}
を使用してください。
ブラインドモードは、特に修飾キー(Ctrl、Alt、Shift、Win)を扱う場合、SendPlayで完全にサポートされているわけではありません。
次の表は、送信可能な特殊キーの一覧です(各キー名は、中括弧で囲む必要があります):
キー名 | 説明 |
---|---|
{F1}~{F24} | ファンクションキー。事例:{F12} は F12。 |
{!} | ! |
{#} | # |
{+} | + |
{^} | ^ |
{{} | { |
{}} | } |
{Enter} | メインキーボードでEnter |
{Escape}または{Esc} | Esc |
{Space} | Space(送信する文字列の先頭または末尾に現れるスペースにのみ必要で、途中にあるものはリテラルスペースでもよい) |
{Tab} | Tab |
{Backspace}または{BS} | Backspace |
{Delete}または{Del} | Del |
{Insert}または{Ins} | Ins |
{Up} | メインキーボードで↑(上矢印) |
{Down} | メインキーボードで↓(下矢印)を押す |
{Left} | メインキーボードで←(左矢印)を押す |
{Right} | メインキーボードで→(右矢印 |
{Home} | メインキーボードでHome |
{End} | メインキーボードでEnd |
{PgUp} | メインキーボードでPgUp |
{PgDn} | メインキーボードのPgDn |
{CapsLock} | CapsLock(SetCapsLockStateを使用するとより確実です)。{CapsLock}を送信する場合、事前にSetStoreCapsLockMode False が必要な場合があります。 |
{ScrollLock} | ScrollLock(参照:SetScrollLockState) |
{NumLock} | NumLock(参照:SetNumLockState) |
{Control}または{Ctrl} | Ctrl(技術情報:はニュートラルバーチャルキーを送信しますが、左のスキャンコード) |
{LControl}または{LCtrl} | 左Ctrl(技術情報:中立キーではなく、左の仮想キーを送信します) |
{RControl}または{RCtrl} | 右Ctrl |
{Control down}または{Ctrl down} | {Ctrl up}が送信されるまで、Ctrlを押したままにします。左または右のキーを押したままにするには、CtrlをLCtrlまたはRCtrlに置き換えてください。 |
{Alt} | Alt(技術情報:はニュートラルバーチャルキーを送信しますが、左のスキャンコード) |
{LAlt} | 左Alt(技術情報:中立キーではなく、左の仮想キーを送信します) |
{RAlt} | 右Alt(キーボードレイアウトによってはAltGr) |
{Alt down} | {Alt up}が送信されるまでAltdownを保持します。左または右のキーを押したままにする場合は、AltをLAltまたはRAltに置き換えてください。 |
{Shift} | Shift(技術情報:はニュートラルバーチャルキーを送信しますが、左のスキャンコード) |
{LShift} | 左Shift(技術情報:中立キーではなく、左の仮想キーを送信します) |
{RShift} | 右Shift |
{Shift down} | {Shift up}が送信されるまで、Shiftを押したままにします。左または右のキーを押したままにするには、ShiftをLShiftまたはRShiftに置き換えてください。 |
{LWin} | 左Win |
{RWin} | 右Win |
{LWin down} | {LWin up}が送信されるまで、左のWinを押したままにします |
{RWin down} | {RWin up}が送信されるまで、右のWinを下に保持する |
{AppsKey} | Menu(右クリックメニューまたはコンテキストメニューを呼び出す) |
{Sleep} | Sleep |
{ASC nnnnn} | Alt+nnnnのキーパッドの組み合わせを送信します。キーボードに存在しない特殊文字を生成するために使用することができます。To generate printable ASCII characters or other characters from code page 437, specify a number between 1 and 255. ANSI文字(ほとんどの言語で標準)を生成するには、128から255までの数字を指定しますが、その前に先頭の0を付けます(例:{Asc 0133})。 256から65535までの数字(先頭のゼロを含まない)を指定することで、ユニコード文字を生成することができます。ただし、すべてのアプリケーションで対応しているわけではありません。代替案については、以下のセクションを参照してください。 |
{U+nnnn} | Unicode 文字を送信します。nnnnは、0x 接頭辞を除いた文字の 16 進数値です。SendとControlSendは自動的にUnicodeテキストをサポートするので、これは通常必要ありません。 文字の送信にはSendInput()またはWM_CHARが使用され、現在の送信モードは影響しない。この方法で送られた文字は、通常、ショートカットキーやホットキーは作動しません。 |
{vkXX} |
仮想キーXXとスキャンコードYYYを持つキーストロークを送信します。事例: XXとYYYの値は16進数で、通常はメインウィンドウ「View->Key history」メニュー項目から判断することができます。こちらも参照のこと:特殊キー 警告:この方法でvkとscを組み合わせることは、Sendの場合のみ有効です。 |
{Numpad0}~{Numpad9} | Numpadの数字キー(NumLockがONの時の状態です)。事例:{Numpad5} は 5。 |
{NumpadDot} | .(テンキー期間)(NumLockがONの時に見られる)。 |
{NumpadEnter} | キーパッドのEnter |
{NumpadMult} | *(テンキーの乗算) |
{NumpadDiv} | /(テンキーの除算) |
{NumpadAdd} | +(テンキーの加算) |
{NumpadSub} | -(テンキーの減算) |
{NumpadDel} | キーパッドのDel(NumLockがOFFのときは、このキーと以下のNumpadキーが使用されます) |
{NumpadIns} | キーパッドのIns |
{NumpadClear} | キーパッドのクリアキー(NumLockがOFFの場合、通常は5)。 |
{NumpadUp} | キーパッドで↑(上矢印) |
{NumpadDown} | キーパッドで↓(下矢印) |
{NumpadLeft} | キーパッドで←(左矢印)を押す |
{NumpadRight} | キーパッドで→(右矢印 |
{NumpadHome} | キーパッドでHome |
{NumpadEnd} | キーパッドでEnd |
{NumpadPgUp} | キーパッドでPgUp |
{NumpadPgDn} | キーパッドでPgDn |
{Browser_Back} | ブラウザの「戻る」ボタンを選択する |
{Browser_Forward} | ブラウザの「進む」ボタンを選択する |
{Browser_Refresh} | ブラウザの「更新」ボタンを選択する |
{Browser_Stop} | ブラウザの「停止」ボタンを選択する |
{Browser_Search} | ブラウザの「検索」ボタンを選択する |
{Browser_Favorites} | ブラウザの "お気に入り"ボタンを選択 |
{Browser_Home} | ブラウザを起動し、トップページに移動する |
{Volume_Mute} | マスターボリュームをミュート/アンミュートする。通常、SoundSetMute -1 と同等です。 |
{Volume_Down} | マスターボリュームを小さくする。通常、SoundSetVolume -5 と同等です。 |
{Volume_Up} | マスターボリュームを大きくする。通常、SoundSetVolume "+5" と同等です。 |
{Media_Next} | メディアプレーヤーで次のトラックを選択する |
{Media_Prev} | メディアプレーヤーで前のトラックを選択する |
{Media_Stop} | メディアプレーヤーの停止 |
{Media_Play_Pause} | メディアプレーヤーの再生/一時停止 |
{Launch_Mail} | メールアプリケーションを起動する |
{Launch_Media} | メディアプレーヤーの起動 |
{Launch_App1} | ユーザーアプリ1起動 |
{Launch_App2} | ユーザーアプリ2起動 |
{PrintScreen} | PrtSc |
{CtrlBreak} | Ctrl+Pause |
{Pause} | Pause |
{Click [Options]} | クリック機能と同じオプションを使って、マウスクリックを送信します。例えば、Send "{Click}" はマウスカーソルの現在位置でマウスの左ボタンを1回クリックし、Send "{Click 100 200}" は座標100、200(CoordModeに基づく)でクリックします。クリックせずにマウスを移動させる場合は、座標の後に0を指定します(例:Send "{Click 100 200 0}" )。マウスクリックの遅延時間はSetMouseDelayで決定されます(SetKeyDelayではありません)。 |
{WheelDown}、{WheelUp}、{WheelLeft}、{WheelRight}、{LButton}、{RButton}、{MButton}、{XButton1}、{XButton2} |
カーソルの現在位置でマウスボタンイベントを送信します(位置やその他のオプションを制御するには、上記の{Click}を使用します)。マウスクリックの遅延時間は、SetMouseDelayで決定されます。 LButtonとRButtonは、マウスのプライマリボタンとセカンダリボタンに対応します。通常、マウスのプライマリボタン(LButton)は左側にありますが、ユーザーはシステム設定によってボタンを入れ替えることができます。 |
{Blind} | ブラインドモードを有効にします。これは、一般的に期待通りに動作するように、通常自動的に行われる多くのことを無効にすることで、スクリプトをより制御できるようにするものです。{Blind} は文字列の先頭に出現する必要があります。 |
{Raw} | 以下の文字が文字通りに解釈されるRawモードを有効にします:^+!#{} 。Although {Raw} need not occur at the beginning of the string, once specified, it stays in effect for the remainder of the string. |
{Text} | キーストロークではなく、文字のストリームを送信するテキストモードを有効にします。Rawモードと同様に、Textモードでは、以下の文字が文字通りに解釈されます:^+!#{} 。Although {Text} need not occur at the beginning of the string, once specified, it stays in effect for the remainder of the string. |
キー操作のリピート:中括弧で囲んで、キーの名前と、それを繰り返す回数を指定します。事例:
Send "{DEL 4}" ; Presses the Delete key 4 times. Send "{S 30}" ; Sends 30 uppercase S characters. Send "+{TAB 4}" ; Presses Shift-Tab 4 times.
キーを押したままにしたり離したりするには:キーの名前の後にDownまたはUpという単語を中括弧で囲みます。事例:
Send "{b down}{b up}" Send "{TAB down}{TAB up}" Send "{Up down}" ; Presses down the up-arrow key. Sleep 1000 ; Keeps it down for one second. Send "{Up up}" ; Releases the up-arrow key.
上記の方法でキーを押した場合、物理的に押した場合のようにオートリピートが始まるわけではありません(オートリピートはドライバー/ハードウェアの機能であるためです)。しかし、Loopを使用することでオートリピートを模擬することができます。次の例では、タブキーを20回送信しています:
Loop 20 { Send "{Tab down}" ; Auto-repeat consists of consecutive down-events (with no up-events). Sleep 30 ; The number of milliseconds between keystrokes (or use SetKeyDelay). } Send "{Tab up}" ; Release the key.
デフォルトでは、送信によって修飾キー(Control、Shift、Alt、Win)が「押下」された場合、送信は自動的に修飾キーを解除しません。例えば、Send "a"
は、ユーザーが物理的にCtrlを持っている場合、Send "{Blind}{Ctrl up}a{Ctrl down}"
と同様の動作をすることがあります、 が、Send "{Ctrl Down}"
の後にSend "a"
を送るとCtrl+Aとなる。DownTempと DownRを使用すると、この動作をオーバーライドすることができます。DownTempと DownRは、修飾キー(Control、Shift、Alt、Win)以外はDownと同じ効果になります。
DownTempは、キーが永久にダウンしているわけではなく、キーストロークが必要とするときはいつでもリリースできることを後続の送信機に伝えます。例えば、Send "{Control DownTemp}"
した後にSend "a"
すると、 Ctrl+Aではなく、Aが出力されます。Sendを使用すると、モディファイアを永久に解放する可能性があるため、DownTempはモディファイアキーの再マッピングに適していません。
DownR(Rはリマッピングを意味し、主な用途はこれです)は、キーが自動的に離された場合、送信終了時に再び押されるように後続の送信機に指示します。例えば、Send "{Control DownR}"
した後にSend "a"
すると、Ctrl+AではなくAを生成しますが、キーボードショートカットを使用するためにCtrlを押したままの状態にします。つまり、DownRは物理的にキーを押すのと同じような効果があるのです。
文字が現在のキーボードレイアウト上の仮想キーに対応していない場合、「押す」「離す」ことができません。例えば、Send "{µ up}"
は、ほとんどのレイアウトで効果がなく、Send "{µ down}"
はSend "µ"
と同等であることを示しています。
キャラクターとキー:の比較:デフォルトでは、文字はまずキーストロークに変換されて送信されます。この変換が不可能な場合(つまり、現在のキーボードレイアウトにその文字を生成するキーまたはキーの組み合わせがない場合)、その文字は以下のフォールバックメソッドの1つによって送信されます:
注:上記の方法で送信された文字は、通常、キーボードショートカットやホットキーは作動しません。
a-zまたはA-Z(ASCII文字)の範囲にある文字については、現在のキーボードレイアウトに存在しない各文字を、文字として、または対応する仮想キーコード(vk41~vk5A)として送信することができます:
Send "{Raw}Regards"
は所望のテキストを送信します。R(vk52)を押すと他の文字(ロシア語レイアウトではКなど)が出てくるが、期待通りのテキストが送られる。この場合、先行送信でモディファイアキーが有効になっていない限り、{Raw}
は省略可能です。^c
と{Ctrl down}c{Ctrl up}
は標準のCtrl+Cショートカットを有効にし、{c}
は{vk43}
と同等です。現在のキーボードレイアウトにその文字が存在する場合、そのレイアウトがその文字に関連付けるキーコードとして常に送信されます(テキストモードが使用されていない場合、その文字は他の手段で送信されます)。つまり、上記のセクションは、ロシア語のような非ラテン語ベースのレイアウトにのみ関係します。
モディファイアの状態:Sendは、WinまたはAlt修飾キーの状態を変更する必要がある場合(ユーザーがこれらのキーのいずれかを保持している場合など)、スタートメニューやウィンドウメニューが表示されないようにするために追加のキーストローク(デフォルトではCtrl)を注入することができます。詳しくは、A_MenuMaskKeyを参照してください。
BlockInputとSendInput/SendPlayの比較:BlockInput関数を使用すると、ユーザーが物理的に入力したキーストロークがシミュレーションされたキーストロークの流れを中断するのを防ぐことができますが、キーストロークとマウスクリックが中断しないようにSendInputまたはSendPlayを使用する方がよい場合があります。これは、BlockInputとは異なり、SendInput/Playは送信中にユーザーが入力したものを破棄せず、そのようなキー入力をバッファリングして後から送信するためです。
大量のキーを送信する場合、継続部分を使用することで、可読性と保守性を向上させることができます。
オペレーティング システムでは、Ctrl+Alt+Del の組み合わせのシミュレーションはできないので、Send "^!{Delete}"
などの操作を行ったとしても、何の影響もありません。。
アクティブウィンドウが管理者権限で実行され、スクリプトが管理者権限で実行されていない場合、送信しても効果がない場合があります。これは、User Interface Privilege Isolationと呼ばれるセキュリティの仕組みによるものです。
SendInputは、その優れた速度と信頼性から、一般的にキーストロークやマウスクリックを送信する方法として好まれています。Under most conditions, SendInput is nearly instantaneous, even when sending long strings. SendInputは非常に高速なので、他のウィンドウが不意に現れてキー入力を傍受される機会が少なく、信頼性も高いです。SendInput中にユーザーが入力したものは、その後まで延期されるため、信頼性はさらに向上します。
他の送信モードと異なり、オペレーティングシステムではSendInputは約5000文字に制限されています(オペレーティングシステムのバージョンや性能設定により異なる場合があります)。この制限を超えた文字や事象は送信されません。
注:SendInputは、オペレーティングシステムがこのモードでの遅延をサポートしないため、SetKeyDelayを無視します。ただし、後述の条件でSendInputがSendEventに戻る場合は、SetKeyDelay -1, 0
を使用します(SendEventのKeyDelayが -1,-1
の場合は -1,-1
を使用します)。SendInputがSendPlayに戻ると、SendPlayのKeyDelayを使用します。
If the script has a low-level keyboard hook installed, SendInput automatically uninstalls it prior to executing and reinstalls it afterward. As a consequence, SendInput generally cannot trigger the script's own hook hotkeys or InputHooks. The hook is temporarily uninstalled because its presence would otherwise disable all of SendInput's advantages, making it inferior to both SendPlay and SendEvent. However, this can only be done for the script's own hook, and is not done if an external hook is detected as described below.
SendInputが{Click}などの手段でマウスクリックを送信し、CoordMode "Mouse", "Window"
またはCoordMode "Mouse", "Client"
が有効な場合、すべてのクリックは、送信開始時にアクティブだったウィンドウに対する相対移動となります。そのため、SendInputが意図的に別のウィンドウをアクティブにした場合(alt-tabなどの手段)、同じ関数内でのその後のクリックの座標が、古いウィンドウではなく新しいウィンドウに対するものであった場合、間違った座標になります。
警告SendPlayは、UACが有効な場合、スクリプトが管理者として実行されていても、全く効果がない場合があります。詳しくは、FAQをご覧ください。
SendPlayの最大の特徴は、他のモードよりも幅広いゲームにおいて、キーストロークやマウスクリックを「再生」できることです。例えば、あるゲームでは、SendPlayオプションがあるときだけhotstringsを受け入れることができます。
3つの送信モードのうち、SendPlayはキー操作やマウスクリックそのものをシミュレートしていないため、最も珍しいものです。その代わりに、アクティブなウィンドウに直接流れる一連のイベント(メッセージ)を作成します(ControlSendと似ていますが、より低いレベルです)。その結果、SendPlayはホットキーやホットストリングをトリガーしません。
SendInputと同様に、SendPlayのキー入力は、ユーザーが入力したキー入力が挟まれることはありません。そのため、SendPlay中にユーザーが何かを入力することがあっても、そのキー入力はその後まで延期されます。
SendPlayはSendInputよりかなり遅いですが、通常は従来のSendEventモードより速いです(KeyDelayが-1でも)。
キーボードフックがインストールされている場合、SendPlay時に両Win(LWin、RWin)は自動的にブロックされます。これにより、ユーザーが送信中に誤ってWinを押してしまっても、スタートメニューが表示されないようにしました。一方、LWinとRWin以外のキーは、OSが自動的にSendPlayの後まで延期するため(バッファリングにより)、ブロックする必要はありません。
SendPlayは、標準設定のSetKeyDelayと SetMouseDelayを使用しません。その代わり、デフォルトでは全く遅延しないようになっていますが、以下の例のように変更することが可能です:
SetKeyDelay 0, 10, "Play" ; Note that both 0 and -1 are the same in SendPlay mode. SetMouseDelay 10, "Play"
SendPlayは、CapsLock、NumLock、ScrollLockのオン/オフを切り替えることができません。同様に、キーストロークがスクリプト自身のウィンドウに送信されない限り、GetKeyStateによって見られるキーの状態を変更することはできません。その場合でも、左右の修飾キー(例:RControl)の変更は、中立の対応するキー(例:Control)を介してのみ検出することができます。また、SendPlayにはSendModeのページで説明されている他の制限があります。
SendInputやSendEventとは異なり、ユーザーはCtrl+Alt+DelまたはCtrl+Escを押してSendPlayを中断できます。この場合、残りのキー入力は送信されませんが、SendPlayが正常に完了したかのようにスクリプトの実行は継続されます。
SendPlayはLWinとRWinイベントを送ることができますが、それらはオペレーティングシステム本来の機能を果たすのではなく、アクティブウィンドウに直接送られます。これを回避するためには、SendEventを使用します。例えば、SendEvent "#r"
は、スタートメニューの実行ダイアログを表示します。
SendMode、SetKeyDelay、SetStoreCapsLockMode、エスケープシーケンス(例:`n)、ControlSend、BlockInput、ホットストリング、WinActivate
最速の方法で、長い一連の生文字を送信します。
SendInput "{Raw}A long series of raw characters sent via the fastest method."
Holds down a key contained in a variable.
MyKey := "Shift" Send "{" MyKey " down}" ; Holds down the Shift key.