首页 > 系统相关 >windows下按键映射

windows下按键映射

时间:2023-04-27 17:55:56浏览次数:56  
标签:wParam lParam 映射 windows nCode 按键 include SYSKEYDOWN

 

include iostream
include windows.h

using namespace std;

HHOOK hHook = 0;

LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode == HC_ACTION)
    {
        KBDLLHOOKSTRUCT* p = (KBDLLHOOKSTRUCT*) lParam;
        if (p->vkCode == VK_LMENU) // VK_LMENU = ALT key
        {
           switch (wParam){

            case WM_SYSKEYDOWN :{ // use SYSKEYDOWN
                cout << "Key down" << endl;

                keybd_event(VK_LCONTROL, 0x1D, KEYEVENTF_EXTENDEDKEY | 0, 0 );
            break;
            }
            case WM_KEYUP: // use regular keyup
             {
                cout << "Key up" << endl;

                keybd_event( VK_LCONTROL, 0x1D, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
                return 1;

            break;
             }
            default:
                wParam = WM_SYSKEYDOWN; // if you do not specify it changes back to alt
                break;
           }
            return 1;
        }
    }
    return CallNextHookEx(hHook, nCode, wParam, lParam);
}
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow)
{

   hHook = SetWindowsHookEx(WH_KEYBOARD_LL, &LowLevelKeyboardProc, hThisInstance, NULL);
    if (hHook == NULL)
    {
        cout << "Error" << endl;
        return 1;
    }

    MSG messages;

    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }

    return messages.wParam;
}

转载于:https://qa.1r1g.com/sf/ask/1219369371/

标签:wParam,lParam,映射,windows,nCode,按键,include,SYSKEYDOWN
From: https://www.cnblogs.com/tingtaishou/p/17359788.html

相关文章

  • Windows共享 :2层权限控制机制
    如题。windows太GUI了,并且通常意义上太易用了。但,在某些需要深入研究的方面,比如文件和打印机共享方面,一旦出现问题,就往往不知所以然! 之所以是2层权限控制,首先,复杂的权限控制场景其次,要注意:共享服务本身是分级的,共享服务自身需要一套权限控制机制;另外,因为共享文件及......
  • DataX-在Windows上实现postgresql同步数据到mysql
    场景DataX-阿里开源离线同步工具在Windows上实现Sqlserver到Mysql全量同步和增量同步:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130330353在上面实现sqlserver到mysql的数据同步之后,如果要实现postgresql到mysql数据同步流程一样。以PostGis中的OGC元数据......
  • Windows 11安装跳过联网
    方案1在选择WIFI联网的界面,不要连接网络。Shift+F10(或者Fn+Shift+F10),打开cmd窗口,输入命令:oobe\BypassNRO.cmd重启后会有一个我没有互联网的选项。如果是台式,记得先拔出网线。方案2改注册表在选择WIFI联网的界面,不要连接网络。Shift+F10(或者Fn+Shift+F10),打开cmd窗口,输入......
  • 【经验分享】Windows快捷键Win+G无法使用,提示需要新应用打开链接
    环境:系统版本:Windows10家庭中文版问题描述:描述:按下Win+G后弹出提示框,需要使用新应用以打开此ms-gamingoverlay链接问题解释:误将Xboxgamebar应用程序删除了,无法找到启动的程序。这个程序我当时以为就是个打游戏的,我就删除了,没想到录屏会需要到。解决方法:1.查......
  • 安装多个NodeJS windows上安装多个Nodejs版本 解决vue2/vue3同时运行
    第一步下载nvm-windowsnvm-windows下载地址:Github最新下载地址进入之后直接下载第二步安装NVM注意路径一定不要包含空格中文否则会报错注意安装路径一定不要包含空格中文否则会报错 点击安装之后如果之前安装了nodejs的话会提示希望nvm管理已安装node版本吗点击是......
  • 如何使MFC的消息映射支持lambda
    MFC的消息映射目前原生不支持lambda的方式来写入,我们可以利用编译器来实现lambda的支持,因为lambda是一个静态类型,所以这里实现非常的简单,MFC的消息映射要求是一个成员函数,并且保证函数的类型。我这里也是实现一个成员函数,这是一个模板函数:template<autoFun,typename.........
  • 使用Windows API获取文件,或者文件夹的大小
    获取一个文件的大小:通过使用GetFileSizeEx获取文件的大小,LONGLONGFileSize(CStringfile)constnoexcept{HANDLEfp=CreateFile(file.GetBuffer(),GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);LARGE_INTEGERinfo;memset(&info,......
  • 创建Windows锁定桌面快捷方式并固定到任务栏
    1.创建快速锁定计算机的快捷方式1.首先,右击桌面,选择新建,选择快捷方式,新建一个快捷方式2.在出现的对话框中键入如下值%windir%/system32/rundll32.exeuser32.dll,LockWorkStation3.(注区分大小写))然后为快捷方式启个名称即可4.右键点击创建好的桌面快捷方式选择固定到任......
  • Windows服务的启动类型
    SERVICE_BOOT_START 0x00000000 只适用于驱动SERVICE_SYSTEM_START 0x00000001 只适用于驱动,在IoInitSystem中启动SERVICE_AUTO_START0x00000002 由服务控制管理器在系统启动阶段启动SERVICE_DEMAND_START0x00000003按需启动,PnP管理器(针对设备驱动程序)或服务......
  • windows忘记登录密码处理方法
    1.重新启动电脑,连续按F8键,选择命令提示的安全模式2.选择Administrator3,打开管理员命令窗口4.输入命令:netuser查找用户帐户:显示结果如下:-------------------------------------------------------------------------------AdministratorDefaultAccount......