Windowsの自動操作にチャレンジ!(その3) – 文字を入力してみよう

前回は、マウスを動かしてクリックをしました。
今回は、文字入力をしてみたいと思います。

今回やること

今回は、WindowsAPIを使用して、カーソルのある場所に自動で「abc」と入力してみたいと思います。
前回と同じように、VisualC#2019でサンプルプロジェクトを作成して実験します。

Windows API関数の定義

文字入力には、キーボードのイベント「keybd_event」を使用します。
前回のmouse_event関数と同じ「user32.dll」(Windowsのユーザー・インターフェースを管理)を使用します。
この関数は、仮想キーコードを指定して実行することで、キーボードのイベントを発生させます。

まずは、DLLのインポートができるように、先頭に名前空間を定義します。(前回と同じです)

   using System.Runtime.InteropServices;

続いて、クラスの先頭に、次のコードを記述します。

    // Windows API
    [DllImport("user32.dll")]
    public static extern void keybd_event(byte byVk, byte byScan, int dwFlags, int dwExtraInfo);

これで、「keybd_event」が使用できるようになります。

文字の入力

実際に文字を入力する場合、キーボードで入力するのと同じで、「キーを押す」で文字を入力し、その後「キーを離す」処理を行います。

    // a
    iKeyCode = 0x41;
    // キーを押す
    keybd_event((byte)iKeyCode, 0, 0, 0);
    // キーを離す
    keybd_event((byte)iKeyCode, 0, 2, 0);

iKeyCodeには、仮想キーコードを入れます。(例では、「a」)
こうすることで、仮想キーコードに対応する文字を入力することが出来ます。

注意としては、キーボードイベントなので、通常のキーボードで入力するときと同じで、例えば「A」を入力する場合、「Shift」+「a」というようにします。
その場合、「Shift」を押す→「a」を押す→「a」を離す→「Shift」を離す、という順序で実行します。

実際の動作

サンプルのテストプログラムを実行して、動作を見てみましょう。
今回のサンプルプログラムでは、「abc」と入力します。

サンプルプログラムを立ち上げると、下記の画面になります。
「入力」ボタンをクリックすることで、カウントダウンが始まり、その後、カーソルのある場所に「abc」が入力されます。

メモ帳を立ち上げ、カウントダウンの間にカーソルをメモ帳に移します。(メモ帳をクリックします)

カウントダウンが終了すれば、メモ帳に「abc」が入力されます。

これだけの動作ですが、この方法でキーボードで入力しているようにキー入力することが出来るため、入力作業の自動化が出来ます。
前回のマウス動作と組み合わせれば、Windowsの自動操作も可能になります。

サンプル

サンプルのテストプログラムは、下記からダウンロードできます。
よろしければ、お試しください。
※このテストサンプルを使用したことによる損害等には一切責任を負いませんので、すべて自己責任でお願いします。

最後に

最近話題のRPAもこのような技術を使用しているのではないかと思います。
出来れば、簡単な自動操作ソフトで、パソコン作業を簡単に自動化してみたいと思います。

次回は、もう少し機能を組み合わせて自動操作をしてみたいと思います。