Ruby 什么是GetAsyncKeyState';返回值是多少?

Ruby 什么是GetAsyncKeyState';返回值是多少?,ruby,winapi,Ruby,Winapi,我试图在我正在进行的项目中使用GetAsyncKeyState。唯一的问题是我不知道它返回什么值,以及如何检查它。根据MSN: 类型:短 如果函数成功,返回值将指定自上次调用GetAsyncKeyState以来是否按下该键,以及该键当前是向上还是向下。如果设置了最高有效位,则按键向下;如果设置了最低有效位,则在上一次调用GetAsyncKeyState后按下按键。然而,你不应该依赖于这最后的行为;有关更多信息,请参阅备注 我知道typeSHORT是一个数字,但是我在StackOverflow和i

我试图在我正在进行的项目中使用
GetAsyncKeyState
。唯一的问题是我不知道它返回什么值,以及如何检查它。根据MSN:

类型:短

如果函数成功,返回值将指定自上次调用GetAsyncKeyState以来是否按下该键,以及该键当前是向上还是向下。如果设置了最高有效位,则按键向下;如果设置了最低有效位,则在上一次调用GetAsyncKeyState后按下按键。然而,你不应该依赖于这最后的行为;有关更多信息,请参阅备注


我知道type
SHORT
是一个数字,但是我在StackOverflow和internet上看到了很多不同的答案,但是当GetAsyncKeyState的返回值计算为true时,它返回0还是0x8001?返回值可以是4个可能的值之一:

  • 0x0000
  • 0x0001
  • 0x8000
  • 0x8001
使用
&0x8000
(或者
<0
,因为
SHORT
是有符号类型)检查是否设置了“最高有效位”(这会使有符号类型为负)


使用
&0x0001
检查是否设置了“最低有效位”。

它返回一组标志,编码为单个16位值。文档解释了各个标志是什么以及它们存储在哪里。您遇到的具体问题是什么?测试是否设置了最后一位的标准方法是测试
@IInspectable。问题是按键时返回的值是多少?它是否返回该键的十六进制值或其他数字?我已经相应地编辑了我的问题。@DavidHeffernan如果设置了最后一位,它会是一位吗?你问错问题了。当按下相应的键时,它返回不同的值,但它总是返回设置了最高有效位的值。小于零检查仅在编程语言支持特定大小的整数值时有效,
2
所有位都用于表示这些类型的值,编程语言使用2的补码来表示有符号值。Ruby似乎不是一种支持上述所有功能的编程语言。