1

user32.dll keybd_event でキーの押下をシミュレートして、テキスト ボックス内のテキストを ( SHIFT+ Win ショートカットで) 強調表示しようとしていますが、機能していません:RIGHT_ARROW

[DllImport("user32.dll")]
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
public const int SHIFT_LEFT = 0xA0;
public const int RIGHT = 0x27;

....

keybd_event(SHIFT_LEFT, 0, 0, 0);
keybd_event(RIGHT, 0, 0, 0);
keybd_event(RIGHT, 0, 2, 0);
keybd_event(SHIFT_LEFT, 0, 2, 0);

カーソルは右に移動しますが、テキストが強調表示されません...誰でも理由を説明できますか?

編集: これが Windows OnScreenKeyboard で機能するのはなぜですか?


KEYEVENTF_EXTENDEDKEY (0x0001): 指定されている場合、スキャン コードの前に値 0xE0 (224) を持つプレフィックス バイトがありました。
だから、私はこれをしました:

keybd_event(SHIFT_LEFT, 0, 1 | 0, 0);
keybd_event(RIGHT, 0, 1 | 0, 0);
keybd_event(RIGHT, 0, 1 | 2, 0);
keybd_event(SHIFT_LEFT, 0, 1 | 2, 0);

問題が解決しました!
KEYEVENTF_EXTENDEDKEY に関する詳細な説明は、こちらにあります

4

1 に答える 1