Windows Scripting Host 2.0
Written 8/31/99
5. キーを他のアプリに送る
今まではCOMアプリしか制御できませんでしたが、 WSH2.0ではSendkeysメソッドで非COMアプリに キーを送ることによってある程度制御することができるようになりました。
    var WShell = WScript.CreateObject("WScript.Shell");
    WShell.Sendkeys(string);
 
とすると、string で表されるキー列がアクティブなウィンドウに送られます。
    scripts/notepad.js (ファイルに保存にしてください)
    ---------------------------------------------------
    var WShell = WScript.CreateObject("WScript.Shell");
    WShell.Run("notepad");              //メモ帳を起動
    WScript.Sleep(5000);                //5秒待って
    WShell.Sendkeys("hoehoe{ENTER}");    //キーを送る
 
メモ帳を起動してから、5秒眠ってメモ帳がアクティブウィンドウになるのを待ち、 キー列を送ります。 {ENTER} は Enter キーを表します。
次に特殊キーなどの表し方を一覧を挙げます。
キーコード キーコード
{{{}}{}}
~{~}+{+}
^{^}%{%}
Enter(テンキー){ENTER} Enter~
BackSpace{BS}Ctrl + Break{BREAK}
Caps Lock{CAPSLOCK} Clear{CLEAR}
Delete{DEL}End{END}
Esc{ESC} Help{HELP}
Home{HOME}Ins{INSERT}
Page Up{PGUP}Return{RETURN}
Scroll Lock{SCROLLLOCK} Tab{TAB}
{UP}{DOWN}
{LEFT} {RIGHT}
F1 〜 F15{F1} 〜 {F15}
Shift キー、Ctrl キー、Alt キーを他のキーと同時に押す場合は、 次のようなコードとあわせて使います。
キーコード キーコード
Shift+Ctrl^
Alt%
例えば、Ctrl + A を送りたい場合は、
    WShell.Sendkeys("^A");
 
とします。

例えば、ちょっと特殊な例ですが、 Altを押しながら2回TABを押すには次のようにカッコで括ります(1/21/02)。

    WShell.Sendkeys("%({TAB}{TAB})");
 
CtrlとShiftについても同様です。

アクティブでないウィンドウにキーを送る場合は、 AppActivate メソッドを用いてアクティブにしてから Sendkeys を使います。

    scripts/active.js (ファイルに保存にしてください)
    --------------------------------------------------------------
    var WShell = WScript.CreateObject("WScript.Shell");
    WShell.AppActivate("無題 - メモ帳"); //メモ帳をアクティブに
    WScript.Sleep(2000);                //2秒待って
    WShell.Sendkeys("~BA~");            //キーを送る
 
AppActivate メソッドの引数と タイトルが完全に一致するウィンドウを探して、 見つかればそのウィンドウをアクティブにします。
見つからなければタイトルの先頭が引数と一致するウィンドウを探し、 見つかればそのウィンドウをアクティブにします。
それでも見つからない場合は、動作不定のようです。
Back