zoukankan      html  css  js  c++  java
  • win32

    RegisterRawInputDevices 可以注册鼠标或者键盘等输入的信息,然后GetRawInputData可以获取传来的WM_INPUT消息中的输入信息。

    代码参考:

    #include <windows.h>
    #include <iostream>
    using namespace std;
    LRESULT CALLBACK WindProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
    {
        if (Msg == WM_INPUT)
        {
            HRAWINPUT hRawInput = (HRAWINPUT)lParam;
            RAWINPUT input = { 0 };
            UINT size = sizeof(input);
            GetRawInputData(hRawInput, RID_INPUT, &input, &size, sizeof(RAWINPUTHEADER));
    
            printf("vkey: %x, flag: %d
    ", input.data.keyboard.VKey, input.data.keyboard.Flags);
        }
        return DefWindowProc(hWnd, Msg, wParam, lParam);
    }
    
    int main()
    {
        WNDCLASSEX wcx = { 0 };
        wcx.cbSize = sizeof(WNDCLASSEX);
        wcx.lpfnWndProc = WindProc;
        wcx.hInstance = GetModuleHandle(NULL);
        wcx.lpszClassName = TEXT("RawInputClass");
        RegisterClassEx(&wcx);
        HWND hWnd = CreateWindowEx(0, TEXT("RawInputClass"), NULL, 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, GetModuleHandle(NULL), NULL);
    
        RAWINPUTDEVICE rid = { 0 };
        rid.usUsagePage = 0x01;
        rid.usUsage = 0x06; //keyboard
        rid.dwFlags = RIDEV_INPUTSINK;
        rid.hwndTarget = hWnd;
    
        RegisterRawInputDevices(&rid, 1, sizeof(RAWINPUTDEVICE));
    
        MSG msg;
        while (GetMessage(&msg, NULL, 0, 0))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    
        return 0;
    }
  • 相关阅读:
    02-zabbix安装部署
    01-zabbix服务说明
    00-ContOS 7.5编译安装MySQL-5.7.30
    bitset习题
    数颜色[分块]
    旋转子段 (思维stl)
    双栈排序(洛谷P1155)二分图的判定+思维贪心
    常见的系统获取唯一码方式
    SHELL-数组
    Prometheus-alertmanager组件使用
  • 原文地址:https://www.cnblogs.com/strive-sun/p/13633618.html
Copyright © 2011-2022 走看看