系统热键

    技术2022-05-11  80

    全局钩子不是一个好办法.

    首先通过函数GlobalFindAtom()查询本服务程序所对应的全局原子是否已存在于全局原子表中。

    ATOM GlobalFindAtom(LPCTSTR lpString);如果原子不存在,调用

    ATOM GlobalAddAtom(LPCTSTR lpString);

    注册系统热键

    BOOL RegisterHotKey(HWND hWnd, // 接收热键响应的窗口句柄int id, // 热键的标识UINT fsModifiers, // 控制键标志UINT vk // 虚拟键值);手动添加WM_HOTKEY消息映射

    最后删除原子、删除热键。

    做成服务程序可以在后台隐藏运行 ,可以使用

    DWORD RegisterServiceProcess(DWORD dwProcessId,DWORD dwType);

    注册为服务程序。其第一个参数指定了将要注册为服务进程的进程标识,参数dwType指定是去注册一个服务进程(为1时)还是去卸载一个服务进程(为0时)。其具体服务注册过程如下:typedef DWORD (WINAPI *REGISTERSERVICEPROCESS)(DWORD, DWORD);REGISTERSERVICEPROCESS RegisterServiceProcess; HMODULE hDll = LoadLibrary("kernel32.dll"); RegisterServiceProcess = (REGISTERSERVICEPROCESS)GetProcAddress(hDll, "RegisterServiceProcess"); if (RegisterServiceProcess != NULL) { RegisterServiceProcess(NULL, 1); }

    xgbing 认证博客专家 驱动开发 arm开发 嵌入式硬件 专注于嵌入式方向的软硬件设计与开发(ASM\C\C ,RTOS,Linux,android,以太网\嵌入式网络协议栈,蓝牙,WIFI,文件系统/嵌入式存储,显示\音频,单片机\DSP\ARM\Cortex,电路设计\PCB布板\硬件驱动\数字逻辑CPLD,FPGA\niosII),目前从事VirtualBox\qemu\KVM虚拟化研究工作。

    最新回复(0)