set x = CreateObject("Wscript.shell")
Wscript.sleep 3000
x.sendkeys "{1}"
x.sendkeys "{2}"
x.sendkeys "{3}"
x.sendkeys "{4}"
x.sendkeys "{5}"
x.sendkeys "{6}"
x.sendkeys "{ENTER}"
如果我想单独再按下右边或左边的SHIFT键?只按一下。不是按下不动。怎麼写?
如何让VB做一个只按一下SHIFT键的脚本?
答案:3 悬赏:80 手机版
解决时间 2021-01-30 19:35
- 提问者网友:喧嚣尘世
- 2021-01-30 04:40
最佳答案
- 五星知识达人网友:深街酒徒
- 2021-01-30 05:52
sendkeys "+"
全部回答
- 1楼网友:迟山
- 2021-01-30 06:46
不好意思难度大····帮不上你 共同关注
- 2楼网友:妄饮晩冬酒
- 2021-01-30 06:09
要完成你的这个功能,建议你用api中的getkeystate比较好。
api说明如下:
declare function getkeystate lib "user32" (byval nvirtkey as long) as integer
如果要检查caps lock的状态,可以用下面的代码:
if getkeystate(vbkeycapital)=1 then
label1.caption = "on"
else
label1.caption = "off"
end if
vbkeycapital是vb系统中定义的常量。
如果要判断其它几个开关键的状态可以使用以下几个常量
vbkeyinsert
vbkeynumlock
vbkeyscrolllock
附注:
这段代码只检测开关键的当前状态,如果要对应检测其它键的状态,窗体本身有keydown和keyup事件,可以很方便的得到shift键。
如果必须要用getkeyboardstate这个api,则调用的方法需要改一下,因为该函数的原型是
bool getkeyboardstate(pbyte)
所以,类似提问时用到的
getkeyboardstate(49)得不到键值,正确的方式应该是:
dim keys(255) as byte
getkeyboardstate(keys(0))
这样调用,才能返回一个包含虚拟键值的数组。
这个数据的下标值带表键值,譬如keys(vbkeyshift)表示shift键,将keys(vbkeyshift) and &h80后,就可以得到该键是否按下,这是系统将按键状态位的最高位高为1时表示该键按下,为0时为松开。
我们可以写一段代码来验证 getkeyboardstate的功能:
private declare function getkeyboardstate lib "user32" (pbkeystate as byte) as long
private sub form_keydown(keycode as integer, shift as integer)
dim keys(255) as byte
dim f as boolean
f = getkeyboardstate(keys(0))
if f then
for i = 0 to 255
if keys(i) and &h80 then msgbox i
next
end if
msgbox keycode
end sub
当有按键按下时,i和keycode是相同的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯