Удерживание кнопки Alt с помощью сообщений Windows - PullRequest
1 голос
/ 07 июня 2011

Как с сообщениями 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);
    }

Ответы [ 2 ]

0 голосов
/ 07 июня 2011

Документы , связанные ссылкой DanielB с битом 29Param, определяющим статус ALT, вы пробовали это?

Бит 29 - код контекста. Значение равно 1, если клавиша ALT нажата, пока клавиша нажата; это 0, если сообщение WM_SYSKEYDOWN отправлено в активное окно, потому что ни у какого окна нет фокуса клавиатуры.

0 голосов
/ 07 июня 2011

В моем понимании, этого должно быть достаточно для отправки WM_SYSKEYDOWN / WM_KEYDOWN.см Документы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...