※ ChatGPTを利用し、要約された質問です(原文:SendInputにおけるスキャンコードの意味)
SendInputにおけるスキャンコードの意味
このQ&Aのポイント
SendInputを使用してソフトウェアキーボードのようにキー入力を行いたい場合、KEYBDINPUT構造体のwScanにスキャンコードを設定することで、仮想キーコードに対応する文字を入力できる。
スキャンコードを設定するかどうかは、SendInputの動作に影響する。設定しない場合でも仮想キーコードの入力はできるが、設定することでより正確な操作が可能。
常にwScanを設定するかどうかは仕様によるため、具体的な要件に基づいて判断する必要がある。
お世話になっております。
Win32APIのSendInput関数についてご教授願いたく質問させていただきます。
C#にて、SendInputを使ってソフトウェアキーボードのようにキー入力を行いたいと考えています。
その際にSendInputにKEYBDINPUT構造体をメンバに持つINPUT構造体を渡しています。
private struct KEYBDINPUT
{
public ushort wVk;
public ushort wScan;
public uint dwFlags;
public uint time;
public IntPtr dwExtraInfo;
}
wVkに仮想キーコードを入れてwScanは0で試しているのですが無事に想定した通りに仮想キーコードに対応する文字が入力できています。
ただ、Webで調べたところwScanにきちんとスキャンコード(MapVirtualKeyで取得)も入れているサンプルも多く見つけました。
そこで、スキャンコードを入れて試したところ、前者と同様に適切に入力することができました。
となると、wScanの設定の有無はどのように影響が出るのでしょうか。
問題がなければ常にwScanを入れておけば良いのかも知れませんが、仕様として分からないまま使うのは憚られます。。。
ご存じの方はご教授願えないでしょうか。
宜しくお願い致します。
お礼
スキャンコードの方のみを検知している場合があると言うことですね。 今後はスキャンコードも設定しておこうと思います。 大変助かりました、有り難うございました。