在数据窗口中使用Shift+Tab来实现前退,用Enter代替Tab来后退。用到了keybd_event
正在看PB8进阶篇的例程。
语句如下:
是一个用户事件 ue_dnwkey
integer VK_TAB = 09
integer VK_SHIFT = 16
if key = KeyLeftArrow! then //Shitf + Tab
keybd_event(VK_SHIFT,0,0,0) //按下shift
keybd_event(VK_TAB,0,0,0) //按下tab
keybd_event(VK_TAB,0,2,0) //释放tab
keybd_event(VK_SHIFT,0,2,0) //释放shift
return 1
end if
if key = KeyRightArrow! or key = KeyEnter! then
keybd_event(VK_TAB,0,0,0) //按下tab
keybd_event(VK_TAB,0,2,0) //释放tab
return 1
end if
我没有书,只是根据例程猜测其实现的功能,偶猜想是在数据窗口中使用Shift+Tab来实现前退,用Enter代替Tab来后退,运行时试了这个功能
我的问题是:
1.Keybd_event的四个参数中第一个定义一个虚据拟键码,键码值必须在1~254之间,那么是否键盘上的每个键都有其固定不变的码,如上例子中的TAB是09,SHIFT是16?
2.第二个参数为0时代表什么?
3.第三个参数我看到API大全上这么说的:
dwFlags:定义函数操作的名个方面的一个标志位集。应用程序可使用如下一些预定义常数的组合设置标志位。
KEYEVENTF_EXETENDEDKEY:若指定该值,则扫描码前一个值为OXEO(224)的前缀字节。DEYEVENTF_KEYUP:若指定该值,该键将被释放;若未指定该值,该键交被接。
那么是否上例子中的0即0XEO的前缀字节,0在这里代表什么意思?是KEYEVENTF_EXETENDEDKEY吗? DEYEVENTF_KEYUP对应的又是什么值呢?2吗?
问题点数:40、回复次数:2Top
1 楼balloonman2002()回复于 2002-12-04 16:06:41 得分 40
1、每个键都有其固定不变的码;
2、bScan ---------- Byte,键的OEM扫描码;
3、0代表“按下”;2代表“松开”;Top
2 楼888888888888(888888888888)回复于 2002-12-04 16:44:32 得分 0
关注Top




