【问题标题】:What is Virtual-Key Code for '='? [duplicate]'=' 的虚拟键码是什么? [复制]
【发布时间】:2017-08-30 12:59:57
【问题描述】:

我查过微软的page,但没找到。

【问题讨论】:

  • 我的 delphi 7 无法识别任何 VK_OEM_xxxx 值。它说 [Error] Unit1.pas(29): Undeclared identifier: 'VK_OEM_PLUS'
  • Windows SDK 没有任何代码。
  • @Atak_Snajpera:VK_OEM_xxx 值均未在 Delphi 7 中定义(VK_OEM_CLEAR 除外),但在以后的版本(至少 D2006)中以 Delphi 的 Windows 单元定义。
  • = 在标准键盘上不是它自己的键,这就是它没有虚拟键码的原因。它与+ 密钥共享,即VK_OEM_PLUS。两个字符使用相同的键码,当前的转换状态决定了生成哪个字符。

标签: delphi


【解决方案1】:

看起来 = 的虚拟键码是 187(在 MSDN 文档中描述为 VK_OEM_PLUS):

keybd_event(VK_OEM_PLUS, 0, 0, 0); 

【讨论】:

  • 您不应该像文档中所述的那样调用 keybd_event
  • 请改用SendInput()。如果你使用它的KEYEVENTF_UNICODE 标志,你可以将实际的'=' 字符作为文本发送,根本不用担心使用虚拟键码。
【解决方案2】:

Windows SDK 没有为等号定义任何通用代码。在 Windows SDK 10.0.15063.0 中,仅适用于 NEC PC-9800 键盘的 VK_OEM_NEC_EQUAL

【讨论】:

  • 这是因为一些 NEC PC-9800 键盘上有一个专用的= 键。大多数键盘都没有。
  • Downvoter 可能已找到 Windows SDK 中定义的等号字符的虚拟键代码。他们可以和我们分享吗?也许是一些 Windows SDK 特别版。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 2020-04-13
相关资源
最近更新 更多