1

Windows メッセージで、ALT ボタンを押したままにするにはどうすればよいですか?

WM_KEYHOLD などはありますか?

これはスクリーンショットのコードですが、何かが間違っていると思います。使用しているキー コードが悪いと思います。0x70 の場合は F1 を送信します。0x46 の場合、迷惑なウィンドウ サウンドを送信します。

    const uint WM_SYSKEYDOWN = 260;
    const uint VK_MENU = 18;//virtual key code of Alt key
    const uint VK_SNAPSHOT = 44;//virtual key code of Snapshot key

    [DllImport("User32.Dll")]
    public static extern long PostMessage(IntPtr hWnd, UInt32 wMsg, long wParam, long lParam);

    [DllImport("user32.dll")]
    public static extern IntPtr FindWindow(String sClassName, String sAppName);

    [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
    public static extern IntPtr GetForegroundWindow();

    private void timer1_Tick(object sender, EventArgs e)
    {
        IntPtr hwnd = GetForegroundWindow();
        //PostMessage(hwnd, WM_SYSKEYDOWN, VK_MENU, 1);
        PostMessage(hwnd, WM_SYSKEYDOWN, VK_SNAPSHOT, 1);
    }
4

2 に答える 2

0

WM_SYSKEYDOWN私の理解では、 /を送信するだけで十分なはずWM_KEYDOWNです。ドキュメントを参照

于 2011-06-07T14:08:30.357 に答える
0

DanielB によってリンクされたドキュメントは、ALT ステータスを定義する lParam のビット 29 を参照していますが、それを試しましたか?

ビット 29 - コンテキスト コード。キーが押されている間に Alt キーが押されている場合、値は 1 です。どのウィンドウにもキーボード フォーカスがないため、アクティブなウィンドウに WM_SYSKEYDOWN メッセージが送信された場合は 0 です。

于 2011-06-07T16:14:20.077 に答える