4
A
回答
1
要获得键盘输入而不管焦点,您可能需要钩住键盘。
请使用WH_KEYBOARD或WH_KEYBOARD_LL查看SetWindowsHookEx。将W添加到Unicode变体的调用中。
3
键盘按压和它们生成的字符之间存在差异。
在最低级别,您可以用GetKeyboardState
查询键盘状态。这通常是键盘记录恶意软件如何实现的,因为它需要最少的权限,并且无论焦点在哪里都能看到所有内容。这种方法的问题(除了需要不断的轮询)之外,你必须将键盘状态拼接成击键,然后将键盘敲击到字符流中。你必须知道键盘是如何映射的,你已经保持了shift键,控制键,alt键等的状态。你必须知道自动重复键,死键和其他可能的复杂情况。
如Jens在他的回答中提到的,如果您有权限可以安装键盘挂钩。
如果您有注意力,并且您是控制台应用程序,则可以使用其中一种功能从标准输入读取。在Windows上,很难获得真正的Unicode输入。您通常会得到所谓的ANSI字符,它们对应于控制台窗口的当前代码页。如果您知道代码页,则可以使用MultiByteToWideChar
将单字节或多字节输入转换为UTF-16(Windows文档称为Unicode)。从那里你可以将它转换为UTF-8(与WideCharToMultiByte
)或任何其他的Unicode编码你想要的。
如果你有专注,而且你是一个GUI应用程序,你可以看到与WM_KEYDOWN
(和朋友)的击键。您也可以使用WM_CHAR
(或从WM_UNICHAR
的UTF-32)获得完全解析的UTF-16字符。如果您需要使用UTF-8,则必须进行转换。
相关问题
- 1. 获取键盘键的字符串
- 2. 获取UTF8字符串
- 3. libusb-win32 - 无法从键盘读取
- 4. 如何从utf8字符串中获取字符
- 5. 从键盘获取字符(内存分配)
- 6. fgets()从键盘读取新行字符
- 7. 如何从utf8字符串中获取等效的非utf8字符?
- 8. Win32键盘组合
- 9. 从tkinter获取键盘
- 10. 获取键盘数字键中符号的javascript键码
- 11. 如何不间断地从键盘获取字符?
- 12. 从键盘上获取一个特殊的字符Python Pygame
- 13. 从fgetc()获取字符C
- 14. 获取UTF8中字符串的长度
- 15. 获取原始utf8字符串
- 16. Win32 C++从元素中获取文本
- 17. 获取AccessViolationException当P /从C++/Win32的DLL
- 18. C#从字典获取键<字符串,流>
- 19. Android - 获取键盘按键
- 20. 如何从键盘布局标识符获取键盘布局名称?
- 21. 获取键盘中断用C
- 22. C++ win32从资源加载字符串
- 23. 什么是win32 /系统调用相当于从键盘获取扫描代码?
- 24. UTF8字符在目标C
- 25. 从键盘读取
- 26. 从MemoryMappedFile获取Win32句柄
- 27. 键盘上的字符输入c
- 28. 获取从键盘(或自定义键盘)输入的文本
- 29. 从关键代码获取字符
- 30. java从字符串获取键码
你说的是控制台应用程序还是GUI应用程序?在前一种情况下,在后一种情况下使用'getwchar()'来响应'WM_UNICHAR'消息。另外请注意,不存在“UTF8字符”这样的内容:“字符”通常表示“Unicode字符”,但Windows文档使用该术语而不是“UTF-16代码单元”。 – Philipp 2010-05-01 10:24:08
实际上它应该抓住笔画,即使它没有焦点 – ehmmmm 2010-05-01 10:28:07