看到标题你是不是不相信呢,说实话,换成以前我也不相信,VBS怎么可能屏蔽键盘和鼠标呢?光靠VBS当然是不可能的啦。但是结合我之前的两篇文章《用C语言屏蔽键盘和鼠标》和《用VBS读写二进制文件》,你会发现通过曲线救国的方法就可以实现了。这应该还算用VBS屏蔽的吧,就像网上很多人在批处理中调用VBS来实现一些批处理无法实现的功能一样。
用C语言写出来的程序还是有点太大了,我用汇编写了一个屏蔽键盘和鼠标的程序,编译好以后才2.5KB,把它的二进制数据放到VBS中不算太大,下载地址在文章末尾。
另外要说一下的是,网上也有所谓的“屏蔽”键盘的VBS程序,使用了快捷方式的快捷键来实现的,只能屏蔽单个按键,组合键和部分特殊按键无法屏蔽,不过拿来恶作剧一下也是不错的。但是代码中那个叫伤脑筋的写的代码通用性也太不高了,竟然使用"\程序\附件\辅助工具\"这样的路径,他怎么知道别人的电脑上有这个路径。我的系统是英文版的,就没有这个路径。于是我改写了一下,代码如下
Dim strKeys,arrKeys strKeys = "A,B,C,D,E,F,G,"_ & "H,I,J,K,L,M,N,O,P,Q,"_ & "R,S,T,U,V,W,X,Y,Z,"_ & "1,2,3,4,5,6,7,8,9,0,"_ & "Tab,Up,Down,Left,Right,"_ & "F1,F2,F3,F4,F5,F6,F7,"_ & "F8,F9,F10,F11,F12" arrKeys = Split(strKeys,",",-1,1) Dim WshShell Set WshShell = CreateObject("wscript.Shell") Dim fso Set fso = CreateObject("scripting.filesystemobject") Dim desktop desktop = WshShell.SpecialFolders("Desktop") Dim bound,link,path bound = UBound(arrKeys) For i = 0 To bound path = desktop & "\" & arrKeys(i) & ".lnk" Set link = WshShell.CreateShortcut(path) link.TargetPath = "https://demon.tw" link.HotKey = arrKeys(i) link.Save fso.GetFile(path).Attributes = 6 Next
不过,还是下面给出的代码才是真正的屏蔽键盘,代码太长就不贴出来了,需要的自己下载。
VBS屏蔽键盘和鼠标的代码
[download id=16]
顺便附上汇编语言屏蔽键盘和鼠标的代码
[download id=17]