1

C# で keybd_event win api 呼び出しを使用しており、alt+ f4alt+tabなどの特別なキーの押下をシミュレートしたいと考えています。shift私のプログラムは、 + paltgr+のような「単純な」キーの押下wと、 の単純な使用を処理することもできますがtabenter2 つの特別なボタン (特別なボタンの場合はaltshiftctrlまたは機能ボタン) が存在する場合、何もしないようです。私のプログラムはリモート デスクトップを介して複数のフォームを処理する必要があります。そのため、この keybd_event 呼び出しを使用していますが、たとえばalt+f4ローカルでも機能しません (メモ帳でテストしていますが、このコマンドで閉じることはできません)。誰が私が間違っているのか考えていますか? それらを機能させることさえ可能ですか?

前もって感謝します!

編集:

すべての win API 呼び出しを格納する DLLImport クラスを作成しました。たとえば、次のようなヘルパー メソッドもあります。

private void PressAlt()
    {
        DLLImport.keybd_event(0xA0, 0x38, 0, 0);
    }

private void ReleaseAlt()
    {
        DLLImport.keybd_event(0xA0, 0x38, 0x0002, 0);
    }

タブの場合、これを別の方法で使用しています:

DLLImport.keybd_event(0x09, 0x0f, 0, 0); //press tab

...

DLLImport.keybd_event(0x09, 0x0f, 0x0002, 0); //release tab

そして、今それをテストしています:

PressAlt();

PressSpecial("tab");

ReleaseSpecial("tab");

ReleaseAlt();
4

1 に答える 1

1

投稿したコードから、少なくとも 1 つの仮想キー コードの値が間違っているようです ( MSDN リファレンスはこちら)。

たとえば、コード0xA0は左シフト キー ( ) です。代わりに( ) または( )VK_LSHIFTを試してください。0x12VK_MENU0xA4VK_LMENU

注 - CodeProjectには、一般的な仮想キー コードとスキャン コードの便利な概要があります。

于 2013-07-10T14:45:15.650 に答える