按键精灵如何调用获取按键状态的api

按键精灵如何调用获取按键状态的api,第1张

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Function 获取键盘按键状态(键盘码)

Dim 按键状态

按键状态 = GetKeyState(键盘码)

If 按键状态 < 0 Then

//按下状态

获取键盘按键状态 = 1

Else

//d起状态

获取键盘按键状态 = 0

End If

End Function

BOOL bPress = GetKeyState(VK_LEFT) & 0x8000; // 检测left键按下

GetAsyncKeyState

GetKeyboardState

如果要精确结合时钟和WM_KEYDOWN来用。

都能得到键盘状态。具体看MSDN说明。

BCB提供对API的支持,可以直接用。

综观TC提供的键盘输入函数,以bioskey函数为最合适选择。

int bioskey(int cmd);

使用BIOS中断0x16执行各种键盘 *** 作。参数cmd确定实际得 *** 作。

bioskey的返回值由cmd决定:

0:低8位非0,返回在队列中等待的下一输入键的ascii字符或键盘的下一次按键输入的ascii字符。低8位为0,则高8位为扩展键盘码。

1:测试是否有可读的输入键,为0,则没有。Ctrl_break 返回0xffff(-1)。否则,返回下一个输入键。键值还保存,供下次cmd=0时bioskey调用返回。

2:请求当前换档键状态。状态值由下列值相或(or)得到:

位7 0x80 Insert ON

6 0x40 Caps ON

5 0x20 Numlock ON

4 0x10 Scroll Lock ON

3 0x08 ALT

2 0x04 CTRL

1 0x02 <- SHIFT

0 0x01 -> SHIFT

为了方便起见,我们首先定义一些常用功能键的键值。

#define ReturnKey 0x0d

#define ESC 0x1b

#define Back 0x08

#define LeftArrow 0x4b00

#define RightArrow 0x4d00

#define UpArrow 0x4800

#define DownArrow 0x5000

#define PageUp 0x4900

#define PageDown 0x5100

#define Home 0x4700

#define End 0x4f00

#define F1 0x3b00

#define F2 0x3c00

#define F3 0x3d00

#define F4 0x3e00

#define F5 0x3f00

#define F6 0x4000

#define F7 0x4100

#define F8 0x4200

#define F9 0x4300

#define F10 0x4400

int GetKey(void)

{

int tKey;

while(bioskey(1)==0)

;

tKey=bioskey(0);

if ((tKey & 0xff)!=0)

tKey=tKey & 0xff;

return tKey;

}

以上代码,可基本完成常用程序键盘读取 *** 作。

但我们必须注意到,对于函数GetKey的定义中,bioskey函数的使用,我们只是对cmd=0,1的情况进行了处理,而对于cmd=2,也即换档键状态没有进行处理,因而诸如ctrl-home等等GetKey不能进行相应的接收,如果确实需要,须继续扩充GetKey函数。

以上就是关于按键精灵如何调用获取按键状态的api全部的内容,包括:按键精灵如何调用获取按键状态的api、请问如何探测键盘按键(键盘左右方向键)、C语言键盘内容读取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10095611.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存