キー送信を使用して入力モードを変更する

PowerAutomateDesktop

「キーの送信」アクションを使用して入力モードを変更する方法を説明します。

Power Automate Desktop(PAD)でデータを入力するフローを作成していると、入力モードが原因で思ったように文字を入力できないことがあります。

特に、半角英数字で入力したいのに日本語入力になっていたり、逆に日本語を入力したいのに半角英数字の状態になっていたりすると、フローが正しく動作しません。

通常、Windowsではキーボードの「半角/全角」キーを押すことで入力モードを切り替えます。

しかし、PADの「キーの送信」アクションには、設定画面から「半角/全角」を直接選択できる項目がありません。

このような場合は、{KanjiMode} を指定することで入力モードを変更できます。

「送信するテキスト」に「{KanjiMode}」を設定する

まず、「キーの送信」アクションをフローに追加します。

「送信するテキスト」に、

{KanjiMode}

と入力します。

これだけで、入力モードを切り替えるためのキーを送信できます。

PADの「キーの送信」アクションは、現在アクティブなアプリケーションにキーストロークを送信するためのアクションです。

通常のキーボード操作で「半角/全角」キーを押すのと同じような処理を、PADのフローから実行できると考えると分かりやすいです。

入力モードを変更した後、そのまま文字入力を続けることができます。

例えば、日本語を入力する処理なら、

  1. 入力先にフォーカスする
  2. {KanjiMode} を送信する
  3. 日本語を入力する

という流れにします。

半角英数字で入力したい場合も、同様に切り替えることが可能です。

ここで注意したいのが、{KanjiMode} は「必ず日本語入力にする」「必ず半角英数字にする」という指定ではなく、入力モードを切り替えるためのキーとして扱う点です。

現在の状態によって結果が変わるため、フローの途中で入力モードがどの状態になっているのかを意識する必要があります。

「切り替える」と「指定する」は違う

入力モードを自動化するときに、特に注意したいポイントです。

{KanjiMode} は、キーボードの「半角/全角」キーを押すような操作です。

つまり、

現在の状態 → 別の状態へ切り替える

という処理になります。

そのため、想定した状態に変更できることを確認しておくことが重要です。

同じフロー内で何度も {KanjiMode} を送信すると、そのたびに入力モードが切り替わってしまい、想定外のモード変更が行われる可能性があります。

例えば、

  • フォーカス時の入力モードが指定されているテキストボックスに対して使用する
  • テキスト入力後に入力されたデータを確認してからモードの切り替えを行う

というように使用すると、想定どおりにフローを動かすことが出来ます。

入力先を先にフォーカスする

{KanjiMode} を送信しているのに思ったように動作しない場合は、キーを送信する対象が正しいかを確認してください。

「キーの送信」は現在アクティブなアプリケーションなどにキーを送信するため、別のウィンドウが前面に出ていると、そちらにキーが送られる可能性があります。

例えば、

  1. ブラウザーの入力欄をクリックする
  2. {KanjiMode} を送信する
  3. 文字を入力する

という順番にしておくと、入力先を明確にできます。

UI要素を利用できる場合は、入力欄にフォーカスするアクションを先に実行しておく方法もあります。

また、「キーの送信」内で送信先を指定する方法もあるので活用してください。

日本語入力が不安定な場合は貼り付けも検討する

日本語を入力するフローでは、入力モードだけでなく、キーボード入力そのものが原因で文字が正しく入力できないケースもあります。

そのような場合は、文字を1文字ずつキー入力させるのではなく、

  1. 入力する文字列をクリップボードに設定する
  2. 入力欄にフォーカスする
  3. Ctrl + V で貼り付ける

という方法も有効です。

特に長い日本語や、入力モードの影響を受けやすい文字列を扱う場合は、キー入力とクリップボード貼り付けを使い分けるとフローを安定させやすくなります。

その他選択肢にないキーを送信したい

選択肢にないキーを送信したい場合は、以下のサイトを参考にしてください。

Keys 列挙型 (System.Windows.Forms)
キー コードと修飾子を指定します。

あまり使用する機会はないかもしれないですが、覚えておいて損はないです。

タイトルとURLをコピーしました