簡體   English   中英

使用 Windows 消息按住 Alt 按鈕

[英]Holding Alt Button Using Windows Messages

如何使用 windows 消息按住 ALT 按鈕?

是否有 WM_KEYHOLD 或類似的東西?

這是屏幕截圖的代碼,但我想有些東西是丟失的。 我認為我使用的鍵碼不好,對於 0x70 它發送 F1。 對於 0x46,它會發送令人討厭的 windows 聲音。

    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);
    }

據我了解,發送WM_SYSKEYDOWN / WM_KEYDOWN就足夠了。 文檔

DanielB鏈接的文檔引用了 lParam 定義 ALT 狀態的第 29 位,你試過嗎?

位 29 - 上下文代碼。 如果 ALT 鍵在按下時按下,則值為 1; 如果 WM_SYSKEYDOWN 消息發布到活動 window 則為 0,因為沒有 window 具有鍵盤焦點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM