# シェル＆「キー送信」命令

| ひまわりで、いろんなWindowsアプリケーションを、遠隔操作してみましょう！ とっても、便利で、面白いですよ！！

以下の命令が、Windowsアプリの私物化計画に必要な命令です。使い方は、一目瞭然だと思いますが、キー送信だけは、ちょっと複雑なので、下で解説します。

> ---シェル
> 起動 | ?を | 外部プログラムを起動する（.hmwファイルならひまわりで実行)
> アクティブ | ?を | アプリケーションをアクティブにする
> キー送信 | ?に,?を | アクティブなアプリケーションにキーを送信する
> 起動して終了まで待機 | ?を | 外部プログラムを起動して終了まで待機する（.hmwファイルならひまわりで実行)

キー送信／キー一覧

> 送信するキーは、VBの SendKeys と互換になっています。
> '+'、'^'、'%'、'~'、'('、')'、'{'、'}'はそれぞれSendKeys関数では特別な意味を持っています。これらの文字を渡すには、中かっこ'{}'で囲んで指定します。たとえば'+'は'{+}'のように指定します。

> 特殊キー一覧

> BackSpace | {BS}
> Tab | {TAB}
> Ctrl+Break | {BREAK}
> Enter | {ENTER} または ~
> Home,End | {HOME},{END}
> Esc,Help | {ESC},{HELP}
> Ins | {INSERT}
> Del | {DELETE}または{DEL}
> ↑,↓,←,↑ | {UP},{DOWN},{LEFT},{RIGHT}
> PrintScreen | {PRTSC}
> PageDown | {PGDN}
> PageUp | {PGUP}
> CapsLock | {CAPSLOCK}
> NumLock | {NUMLOCK}
> ScrollLock | {SCROLLLOCK}
> F1〜F16 | {F1}...{F16}
> ALT+全角/半角 | {IME}

> Shiftキー、Ctrlキー、Altキーとの組み合わせは、記号とアルファベットを組み合わせて使います。

> Shift | +
> Ctrl | ^
> Alt | %

> Shiftキー、Ctrlキー、Altキーを押した状態で、他のキーを連続して押す操作を指定するには、連続するキー操作をかっこ()で囲みます。例えば、Altキーを押しながら'F'と'X'を押す操作の場合は'%(AF)'の様にします。
> 同じキーストロークの繰り返しを指定するには'{Key Number}'という表現を使います。たとえば'{RIGHT 10}'は'→'を10回、'{- 40}'は'-'を40回押すことを意味します。
> (注)SendKeys関数でPrintScreenキーを送った場合、アクティブウィンドウのスナップショットがクリップボードにコピーされますが、アプリケーションはそのキーを受け取ることは出来ません。

キー送信サンプル

> 以下は、メモ帳を起動して、文字を送信する例です。

> `「notepad.exe」を、起動。 0.5秒、待つ。 ｛普通の文字を送る｝ 「無題」に,「メモ帳の遠隔操作。そのまましばらく待って！」を、キー送信。 1秒、待つ。 「無題」に,「\nこのように、外部アプリを遠隔操作できます。」を、キー送信。 1秒、待つ。 「無題」に,「\nびっくりした？」を、キー送信。 ｛特殊キー　Alt + F, Xを送る｝ １秒、待つ。 「無題」に,「%FX」を、キー送信。 2秒、待つ。 「メモ帳」に,「N」を、キー送信。`

> このサンプルのメモ帳程度だと、面白いだけで、それほど、ありがたみを感じませんが、エクセル・ワードを起動して、メニューより印刷をするように、ショートカットキーを送信したり、特定時刻に、バックアップソフトを起動して、自動的にバックアップのボタンを押させたり・・・アイデア次第で、いろいろなことが出来ます。

> [Shift] + [Ctrl] + [1] のように、特殊キーを重ねて送信する場合・・・

> `｛例えば、以下の例は、エディタに現在位置の印をつけるショートカット [Ctrl]+[Shift]+[1] のキーを、送信します。｝ 「ひまわりエディタ」に,「^+1」を、キー送信。`

> Ctrl+Alt+F1を送る場合は、

> 「Form1」に,『^%{F1}』を、キー送信。

> のように、ファンクションキーを、{F1}のように囲う必要があります。
> しかも、ひまわりでは、「」の中の、｛｝は、変数の展開として認識してしまうので、「」は、『』を使う必要があります。

感謝：ひまわりは、キー送信に、七☆星さんの"vbfunc.pas"を利用させて頂いてます。

> VB SendKeys互換ライブラリである"vbfunc.pas"の作者の七☆星さんに感謝。このページも、七☆星さんの書いたマニュアルからの抜粋で構成されています。<m(_ _)m>ペコ

戻る