永发信息网

如何让VB做一个只按一下SHIFT键的脚本?

答案:3  悬赏:80  手机版
解决时间 2021-01-30 19:35
  • 提问者网友:喧嚣尘世
  • 2021-01-30 04:40
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键?只按一下。不是按下不动。怎麼写?
最佳答案
  • 五星知识达人网友:深街酒徒
  • 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是相同的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯