我正在开发一个需要记录和回放击键的程序。主进程作为服务运行,因此它需要一个配置程序来记录击键。
当系统默认键盘布局是(比如说)英语,而用户当前的键盘布局是(比如说)德语时,就会出现问题。用户在配置界面中输入一个“ü”字符,该字符被适当记录和存储。
现在用户运行记事本并尝试播放击键,这是由服务的子项完成的。当将输入转换为传递给 时SendInput
,我们调用VkKeyScan
,然后它告诉我们无法在此键盘上重现该字符(请记住默认键盘布局是英文)。
我真正想做的是同步服务的键盘布局和当前的前台应用程序,这样服务就可以重现用户可以使用键盘的任何字符。GetKeyboardLayout
仅适用于当前进程。这必须在 32 位和 64 位上运行,因此消息挂钩是......不是首选:)。