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链接的文档引用了 lParam 定义 ALT 状态的第 29 位,你试过吗?

位 29 - 上下文代码。如果 ALT 键在按下时按下,则值为 1;如果 WM_SYSKEYDOWN 消息发布到活动窗口,则为 0,因为没有窗口具有键盘焦点。

于 2011-06-07T16:14:20.077 回答