gpt4 book ai didi

c++ win32 从键盘获取 utf8 字符

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:09 25 4
gpt4 key购买 nike

我如何使用 win32 api 读取击键?我还想从国际键盘上看到它们,例如德语变音符号。

谢谢

最佳答案

键盘按下和它们生成的字符之间存在差异。

在最低级别,您可以使用 GetKeyboardState 轮询键盘状态.键盘记录恶意软件通常就是这样做的,因为它需要最少的特权,并且无​​论焦点在哪里都能看到所有内容。这种方法的问题(除了需要不断轮询之外)是您必须将键盘状态拼凑成击键,然后将击键拼凑成字符流。您必须知道键盘是如何映射的,您必须了解 shift 键、控制键、alt 键等的状态。您必须了解自动重复、死键以及可能的其他并发症。

如果你有权限,你可以安装一个键盘 Hook ,正如 Jens 在他的回答中提到的那样。

如果您有焦点,并且您是控制台应用程序,您可以使用其中一个函数从标准输入读取。在 Windows 上,很难获得真正的 Unicode 输入。您通常会得到所谓的 ANSI 字符,它们对应于控制台窗口的当前代码页。如果您知道代码页,则可以使用 MultiByteToWideChar将单字节或多字节输入转换为 UTF-16(Windows 文档称为 Unicode)。从那里您可以将其转换为 UTF-8(使用 WideCharToMultiByte )或您想要的任何其他 Unicode 编码。

如果您有焦点,并且您是一个 GUI 应用程序,您可以使用 WM_KEYDOWN 查看击键(和 friend )。您还可以使用 WM_CHAR 获得完全解析的 UTF-16 字符(或来自 WM_UNICHAR 的 UTF-32)。如果您需要这些中的 UTF-8,则必须进行转换。

关于c++ win32 从键盘获取 utf8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2749545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com