文章关键字 ‘屏蔽’

用VBS屏蔽键盘和鼠标

2010年06月23日,星期三

看到标题你是不是不相信呢,说实话,换成以前我也不相信,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]

用C语言屏蔽键盘和鼠标

2010年06月22日,星期二

调用windows API中的SetWindowsHookEx函数释放键盘和鼠标钩子就可以实现,没有什么技术含量。只不过看到Google关键词“C语言 屏蔽键盘”没有好的链接,所以才写出来。当然,Ctrl+Alt+Del这个组合键是无法通过钩子函数屏蔽的,目前我还没有找到屏蔽的方法,如果你知道,请留言告诉我,谢谢。

很久很久以前我觉得让别人的鼠标不能动是很神奇的事情,这也算是学编程的一个动机罢。初学C语言的时候发现学完只能拿来算数学题,很没有成就感。后来才发现,其实并没有想象中的那么难。借用别人说的一句话,C语言是一种需要很长时间锻炼才知道它很无敌的语言。本文不打算详细介绍钩子函数,只给出了我写的示例代码,感兴趣的可以看看,写的不怎么好,高手请自觉路过。钩子函数的详细用法请自己参阅MSDN文档

代码下载地址,如果你觉得程序有效,请留言告诉我:

[download id=15]