在Windows Mobile设备上,用户经常需要快速启动应用程序。本文将介绍如何通过键盘快捷键实现这一功能。将使用一个名为KeyToggleStart的钩子工具,它通过注册表进行配置。
首先,需要对注册表进行配置。以下是配置的步骤和参数解释:
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Intermec\KeyToggleStart]
"ForbiddenKeys"=hex:
72 73 00
"KeySeq"="123"
"Timeout"=dword:00000003
"LEDid"=dword:00000001
"Exe"="\\Windows\\iexplore.exe"
"Arg"=""
在上述配置中:
KeyToggleStart工具在启动时不会显示任何窗口,只会在设备的开始/主屏幕上显示一个通知图标。点击这个图标可以结束钩子工具。
代码本身并不复杂,关键在于序列匹配部分。由于字符序列与按键不是一一对应的,需要检查键盘的Shift状态以及当前字符是否需要Shift键。例如,星号字符("*")是"8"键和Shift键的组合。如果字符序列中有"*",代码需要检查"8"键和键盘是否处于Shift状态。
以下是C++代码示例,展示了如何实现键序列匹配:
__declspec(dllexport) LRESULT CALLBACK g_LLKeyboardHookCallback(
int nCode,
WPARAM wParam,
LPARAM lParam
) {
// 省略部分代码...
if (nCode == iActOn) {
// 省略部分代码...
if ((byte)pkbhData->vkCode == (byte)szVKeySeq[iMatched]) {
if (bCharShiftSeq[iMatched] == isShifted) {
// 省略部分代码...
}
}
if (wParam == WM_KEYUP) {
if ((byte)pkbhData->vkCode == (byte)szVKeySeq[iMatched] && isShifted == bCharShiftSeq[iMatched]) {
// 省略部分代码...
}
}
// 省略部分代码...
}
return CallNextHookEx(g_hInstalledLLKBDhook, nCode, wParam, lParam);
}