shuhelohelo’s blog

Xamarin.Forms多めです.

プログラムからキー入力を行う

こちらを参考にした.

whoopsidaisies.hatenablog.com

事前準備

SendKeysを試すためにMicrosoft.VisualBasicアセンブリを使うので追加しておく.SendKeysを使うこと自体には関係ない.

ソリューションエクスプローラで,プロジェクトの「References」を右クリックしてコンテキストメニューから「Add Reference」を選択する.

f:id:shuhelohelo:20191123190533p:plain

ダイアログが開くので「Assemblies」でMicrosoft.VisualBasicを検索し,チェックをつけて「OK」ボタンを押す.

f:id:shuhelohelo:20191123190743p:plain

プロジェクトを作って試す

WPF(.NET Framework)のプロジェクトを作成する.

ボタンを設置し,そのクリックイベントハンドラーに以下のように書く.

        private void button_Click(object sender, RoutedEventArgs e)
        {
            Microsoft.VisualBasic.Interaction.AppActivate("Notepad");

            //SendKeysはSystem.Windows.Forms名前空間
            SendKeys.SendWait("キー入力{ENTER}テスト");
            SendKeys.SendWait("{LEFT}{LEFT}{LEFT}{LEFT}{LEFT}");
        }

SendKeys.Sendメソッドでは以下のような実行時エラーが発生するのでSendKeys.SendWaitメソッドを使用している.

f:id:shuhelohelo:20191123191208p:plain

上のコードを実行する際にはメモ帳を事前に起動しておく.

このコードは起動してあるメモ帳をアクティブにして,そこに指定したキー入力を行うもの.

文字以外のキーのコードは以下の公式ドキュメントにかかれている.

https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.sendkeys.send?view=netframework-4.8