1.一种设置第三方软件的热键的方法,所述方法应用于Windows平台,其特征在于,包括:设计独立热键模块,以使得所述第三方软件在启动时加载所述独立热键模块,所述独立热键模块用于对所述第三方软件增加热键功能,所述独立热键模块包括导出函数,所述导出函数用于将所述独立热键模块供外部调用以及初始化;
通过模板类设计定时任务的定时功能,并创建任务模板以调用所述定时功能;
编写状态检测程序,设置所述状态检测程序检测热键状态的功能,并在所述状态检测程序中执行所述任务模板,以定时检测热键的状态,所述状态检测程序为独立区段代码,所述状态检测程序执行时分配动态执行内存,所述状态检测程序随所述独立热键模块一起发布;
当所述第三方软件没有热键时,通过所述独立热键模块新增所述第三方软件的热键功能;
通过所述状态检测程序获得所述第三方软件对应的热键状态;
若所述第三方软件对应的热键状态为按下松开时,则执行所述第三方软件对应的热键的快捷操作。
2.根据权利要求1所述的方法,其特征在于,所述设计独立热键模块,以使得所述第三方软件在启动时加载所述独立热键模块包括:编写独立的dll模块组件以得到所述独立热键模块,并设计所述独立热键模块的设置热键的功能,所述设置热键的功能包括新增热键和修改热键;
通过系统函数LoadLibrary()确定所述第三方软件启动后的优先加载模块;
在所述优先加载模块对应的导入表项的最前面新增所述独立热键模块的导入项,所述独立热键模块的导入项包括所述独立热键模块的模块名称和所述导出函数。
3.根据权利要求2所述的方法,其特征在于,所述设计所述独立热键模块的设置热键的功能包括:当为所述第三方软件新增热键时,所述设计独立热键模块的设置热键的功能包括:通过公式KeyId=GlobalAddAtom(_T("keyid"))‑0xc000获取所述热键的唯一标识信息,所述KeyId用于表示所述热键的唯一标识信息,所述KeyId的合法取值的范围为0x0000~0xBFFF,所述函数GlobalAddAtom用于获取热键标识_T("keyid");
通过调用系统函数RegisterHotKey((Handle,keyid,MOD_XXX,VK_XXX)注册所述热键功能,所述handle表示接收热键产生WM_HOTKEY消息的窗口句柄,所述MOD_XXX表示组合键的标识,所述VK_XXX表示键盘按键标识;
通过系统函数LRESULT Wind::HandleMessage(UINT uMsg,WPARAM wParam,LPARAM lParam)设置所述热键的响应功能,所述uMsg表示指定被寄送的消息,所述wParam和所述lParam用于表示指定附加的消息特定的信息,当所述uMsg的消息类型为所述WM_HOTKEY消息时,所述参数wParam用于存储所述热键的唯一标识信息;
或者,当为所述第三方软件修改热键时,所述设计独立热键模块的设置热键的功能包括:通过所述系统函数RegisterHotKey的参数确定所述第三方软件的当前热键;
若所述当前热键与其他软件的热键存在冲突,则对所述系统函数RegisterHotKey进行hook并修改所述当前热键。
4.根据权利要求1所述的方法,其特征在于,所述通过模板类设计定时任务的定时功能,并创建任务模板以调用所述定时功能包括:通过函数template
根据所述系统时钟获取上次任务执行时间点,并设计函数执行单元,所述函数执行单元适用于所有参数类型的函数;
构造函数TimeTask(),所述函数TimeTask()为显性函数,所述函数TimeTask()的输入参数包括所述上次任务的执行时间点和所述函数执行单元;
根据所述构造函数TimeTask()创建任务模板TimeTask task(),并设置所述任务模板TimeTask task()的间隔预设时间长度以执行任务的功能;
通过while循环实现所述任务模板TimeTask task()的不间断执行,并通过系统函数this_thread::yield释放任务执行结束后的CPU资源。
5.根据权利要求4所述的方法,其特征在于,所述设置所述任务模板TimeTask task()的间隔预设时间长度以执行任务的功能包括:通过函数auto now=Time::now()获取当前时刻,所述Time为所述模板类中的系统时钟;
计算所述当前时刻与上次任务执行时间点的当前任务时间间隔;
若所述当前任务时间间隔大于所述预设时间间隔,则将所述当前时刻确定为当前任务的执行时刻,以实现间隔所述预设任务间隔的任务执行功能。
6.根据权利要求1所述的方法,其特征在于,所述设置所述状态检测程序检测热键状态的功能包括:在所述动态执行内存中确定系统函数GetAsyncKeyState()的内存地址;
根据所述内存地址调用所述系统函数GetAsyncKeyState((vk_code)&0x8000),所述系统函数GetAsyncKeyState((vk_code)&0x8000)的返回值用于指示待测试热键是否被按下,所述vk_code用于表示待测试的虚拟键的键码,所述&0x8000用于表示所述待测试的虚拟键的键码的高位值。
7.根据权利要求6所述的方法,其特征在于,所述在所述动态执行内存中确定系统函数GetAsyncKeyState()的内存地址包括:通过函数GetModuleHandle()确定系统函数GetAsyncKeyState()对应的系统模块,并通过函数GetProcAddress()获取所述内存地址;
或,
在所述独立热键模块中获取所述函数GetAsyncKeyState()的内存地址,并将所述内存地址传递到所述动态执行内存中。
8.一种热键设置装置,其特征在于,包括:
设计单元,用于设计独立热键模块,以使得第三方软件在启动时加载所述独立热键模块,所述独立热键模块用于对所述第三方软件增加热键功能,所述独立热键模块包括导出函数,所述导出函数用于将所述独立热键模块供外部调用以及初始化;
所述设计单元还用于通过模板类设计定时任务的定时功能,并创建任务模板以调用所述定时功能;
所述设计单元还用于编写状态检测程序,设置所述状态检测程序检测热键状态的功能,并在所述状态检测程序中执行所述任务模板,以定时检测热键的状态,所述状态检测程序为独立区段代码,所述状态检测程序执行时分配动态执行内存,所述状态检测程序随所述独立热键模块一起发布;
新增单元,用于当所述第三方软件没有热键时,通过所述独立热键模块新增所述第三方软件的热键功能;
获取单元,用于通过所述状态检测程序获得所述第三方软件对应的热键状态;
执行单元,用于若所述第三方软件对应的热键状态为按下松开时,则执行所述第三方软件对应的热键的快捷操作。
9.一种电子设备,包括存储器、处理器,其特征在于,所述处理器用于执行存储器中存储的计算机管理类程序时实现如权利要求1至7中任意一项所述的设置第三方软件的热键的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机管理类程序,其特征在于:所述计算机管理类程序被处理器执行时实现如权利要求1至7中任意一项所述设置第三方软件的热键的方法的步骤。