c# で winapi を使用してキーの組み合わせを送信すると、奇妙な問題が発生します。私の目標は、fe SHIFT + HOME という 2 つのキーを送信する方法を作成することです。
private const int WM_KEYDOWN = 0x0100;
private const int WM_KEYUP = 0x0101;
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
public static void SendKey(byte key1, byte key2)
{
//SHIFT down
keybd_event(key1, 0, WM_KEYDOWN, UIntPtr.Zero);
//press HOME
keybd_event(key2, 0, WM_KEYDOWN, UIntPtr.Zero);
keybd_event(key2, 0, WM_KEYUP, UIntPtr.Zero);
//SHIFT up
keybd_event(key1, 0, WM_KEYUP, UIntPtr.Zero);
}
問題は、メソッドの実行が終了した後でも key1 (SHIFT) が押されていることです。つまり、追加のメソッド呼び出しは、前回の実行で SHIFT を押した状態で開始されます。非常にシンプルに見えますが、機能させるための解決策が見つかりません。関連するSOの質問をたくさん見て試してみましたが、問題はまだ実際にあります。どんな助けでも大歓迎です。