☰
VBS整人代码从入门到精通:弹窗、锁鼠、假蓝屏与避坑指南
2026/10/15 8:11:21 网站建设 项目流程

简介:这是一份面向VBScript初学者与脚本爱好者的整人代码合集,以docx文档形式收录了多种利用MsgBox消息框、WScript.Shell系统命令、InputBox输入判断、Do...Loop无限循环、SendKeys键盘模拟及WMPlayer媒体播放等技巧编写的趣味小程序,帮助读者在虚拟机等安全环境中理解VBS的自动化能力与常见陷阱。压缩包内共1个docx文件,约192KB,内容以代码片段与效果说明为主,便于对照阅读和动手试验。目前已有11802人学习下载,热度较高。读者可从中掌握消息框参数设置、条件分支与循环结构、系统命令调用及脚本自启动等知识点,同时了解恶作剧代码可能带来的关机、刷屏等风险,从而在尊重他人电脑使用权的前提下,把VBS用于提升效率与解决问题的正向场景。

1. VBS整人代码到底能玩出什么花样:从桌面弹窗到输入劫持的边界

很多人第一次接触 VBS 整人代码,都是被一个突然弹出的窗口吓到——桌面上莫名其妙出现一段文字,关掉又弹,鼠标点哪儿都没用。这类脚本之所以能整到人,核心在于 Windows 系统自带 Windows Script Host,双击 .vbs 文件就能直接跑,不需要装任何运行环境。它不像 exe 那样容易被拦截,也不像 bat 那样窗口一闪而过,而是能调用系统对象做弹窗、发声、模拟按键、操作文件,甚至短暂锁住输入。整人代码的边界就在这里:它本质是调用系统合法接口做恶作剧,不是病毒,但用过头就会变成骚扰甚至破坏。适合谁玩?想给同事开个无伤大雅的玩笑、想理解脚本如何与系统交互的入门者,以及需要给团队做安全意识演示的人。但有一条铁律:所有代码只能在自己或明确同意的机器上跑,别拿别人正在干活的电脑开玩笑。

2. 从零写一个能跑起来的整人脚本:环境、对象和最小弹窗

2.1 为什么 VBS 在 Windows 上双击就能跑

Windows 自带一个叫 Windows Script Host 的组件,它负责解释 .vbs 和 .js 这类脚本文件。你双击一个 .vbs,系统会调用 wscript.exe 来执行,整个过程不需要编译器,也不需要管理员权限。这带来两个直接后果:一是传播门槛极低,发个文件对方双击就中招;二是权限有限,默认只能做当前用户能做的事,改系统目录、写注册表关键项会被拦。整人代码正是卡在这个中间地带——能弹窗、能发声、能模拟按键,但很难真正破坏系统。理解这一点,你就知道为什么有些脚本在别人机器上跑不起来:对方可能改了 .vbs 的默认打开方式,或者组策略禁用了脚本宿主。

2.2 最小可运行弹窗:MsgBox 的四个参数怎么改

先看一个最干净的弹窗脚本,它只做一件事:显示一段文字,等你点确定。

' 最小弹窗:标题、内容、按钮类型、图标类型 MsgBox "你的电脑已被我接管", vbOKOnly + vbExclamation, "系统提示"

这段代码里,MsgBox是 VBS 内置函数,第一个参数是弹窗正文,第二个参数控制按钮和图标,第三个参数是窗口标题。vbOKOnly表示只显示确定按钮,vbExclamation表示显示黄色感叹号图标。如果你把第二个参数改成vbYesNo + vbQuestion,弹窗就会变成“是/否”两个按钮加问号图标。参数可以相加组合,比如vbYesNoCancel + vbCritical就是三个按钮加红色叉号。改标题和内容就能适配不同场景,比如假装是系统更新提示。注意:弹窗是模态的,不点掉它,脚本后面的代码不会执行。

2.3 让弹窗停不下来:循环与延时控制

单次弹窗只能吓人一秒,真正让人抓狂的是循环弹窗。下面这个脚本每隔两秒弹一次,点掉又弹。

' 循环弹窗:每 2000 毫秒弹一次,共 10 次 Dim i For i = 1 To 10 MsgBox "第 " & i & " 次提醒:你的鼠标被锁定了", vbOKOnly + vbInformation, "系统警告" WScript.Sleep 2000 Next

For循环控制次数,WScript.Sleep 2000让脚本暂停 2000 毫秒,也就是 2 秒。如果不加 Sleep,弹窗会瞬间叠满屏幕,对方可能直接强制关机。次数建议控制在 5 到 10 次,太多会让人烦躁到拔电源。WScript.Sleep的单位是毫秒,1000 就是 1 秒。这里用&拼接字符串,把当前次数显示在弹窗里,增加“真实感”。如果你想让弹窗永远停不下来,可以把For换成Do While True,但我不建议这么做,因为对方只能通过任务管理器结束 wscript.exe 进程,体验太差容易翻脸。

2.4 模拟按键和打开程序:WScript.Shell 的两种用法

VBS 能调用WScript.Shell对象来模拟键盘输入和启动程序。下面这个脚本会打开记事本,然后自动输入一段文字。

' 打开记事本并模拟输入 Set shell = CreateObject("WScript.Shell") shell.Run "notepad.exe" WScript.Sleep 1000 ' 等记事本启动 shell.SendKeys "你被整了,哈哈" shell.SendKeys "{ENTER}"

CreateObject("WScript.Shell")创建一个 Shell 对象,Run方法启动外部程序,SendKeys模拟键盘敲击。{ENTER}是特殊键码,表示回车。这里的关键是Sleep要留够时间,否则记事本还没打开,按键就发出去了,会打到桌面上。SendKeys能发的特殊键包括{TAB}、{ESC}、{F5}等。注意:如果对方当前窗口不是记事本,按键会打到其他程序里,可能造成误操作。所以整人脚本里模拟按键要谨慎,别在别人写文档时乱发。

3. 进阶整人套路:锁鼠标、假蓝屏和声音轰炸的实现细节

3.1 用 BlockInput 锁住键鼠的正确姿势

Windows 提供了一个 API 叫BlockInput,可以临时禁用键盘和鼠标输入。VBS 不能直接调 API,但可以通过Shell.Application或调用 PowerShell 间接实现。更常见的做法是用一个循环不断把鼠标移到屏幕角落,让对方点不准。

' 不断把鼠标移到左上角,持续 10 秒 Set shell = CreateObject("WScript.Shell") Dim t t = Timer Do While Timer - t < 10 shell.Run "cmd /c exit" ' 占位,实际用下面这行 ' 下面这行需要配合第三方工具,纯 VBS 无法直接移动鼠标 Loop

纯 VBS 其实没有直接移动鼠标的内置方法,网上很多“锁鼠标”代码是调用了一个叫mouse.exe的小工具,或者用 PowerShell 调 .NET 的Cursor.Position。如果你不想引入外部文件,可以用SendKeys发大量{ESC}或{F1},让当前窗口不断弹出帮助,干扰操作。但这类做法容易卡死对方正在用的程序,风险较高。我的建议是:整人点到为止,锁键鼠这种操作只在对方离开电脑时短时间用,别在人家赶工时用。

3.2 假蓝屏:全屏窗口加文字,别真改系统

假蓝屏的原理很简单:创建一个全屏的 Internet Explorer 窗口,背景设成蓝色,里面写一段白色文字,看起来像系统崩溃。下面是一个可运行的版本。

' 假蓝屏:全屏 IE 窗口显示蓝底白字 Set ie = CreateObject("InternetExplorer.Application") ie.Navigate "about:blank" ie.FullScreen = True ie.Visible = True ' 等页面加载 Do While ie.Busy WScript.Sleep 100 Loop ' 写入内容 ie.Document.Body.InnerHTML = "<body style='background:#0000AA;color:#FFFFFF;font-family:Consolas;font-size:24px;padding:50px;'>" & _ "A problem has been detected and Windows has been shut down to prevent damage.<br><br>" & _ "Press any key to continue...</body>"

这段代码创建 IE 对象,导航到空白页,设为全屏,然后用InnerHTML写入蓝底白字的 HTML。Do While ie.Busy是等页面加载完,否则写入会失败。全屏后对方按 Alt+F4 或 Esc 可以关掉,但如果你把ie.FullScreen和ie.Visible配合好,对方会愣几秒。注意:不要真的去改系统文件或注册表,假蓝屏只是视觉玩笑,真改系统就是破坏。

3.3 声音轰炸:用 Beep 和播放器循环放音频

VBS 可以用Beep发出系统蜂鸣声,但声音很弱。更响的做法是调用 Windows Media Player 播放一段音频文件,循环多次。

' 循环播放音频 5 次 Set wmp = CreateObject("WMPlayer.OCX") wmp.URL = "C:\Windows\Media\Alarm01.wav" wmp.controls.play() WScript.Sleep 3000 wmp.controls.stop()

WMPlayer.OCX是 Windows Media Player 的控件,URL指向音频文件路径,controls.play()开始播放,controls.stop()停止。你可以把Sleep和play放进循环里,实现反复播放。系统自带音频在C:\Windows\Media\下,比如Alarm01.wav、Ring01.wav。如果对方关了音量,这招就失效了。所以声音整人最好配合弹窗一起用,视觉加听觉双管齐下。

3.4 把脚本藏进启动项:自启动的两种写法

想让整人脚本在对方下次开机时自动跑,可以把它放进启动文件夹。VBS 自己就能复制文件。

' 复制自身到启动文件夹 Set fso = CreateObject("Scripting.FileSystemObject") Set shell = CreateObject("WScript.Shell") startup = shell.SpecialFolders("Startup") fso.CopyFile WScript.ScriptFullName, startup & "\system_check.vbs", True

SpecialFolders("Startup")返回当前用户的启动文件夹路径,WScript.ScriptFullName是当前脚本的完整路径,CopyFile把脚本复制过去,第三个参数True表示覆盖已存在文件。这样下次开机就会自动运行。但这也是最容易被发现的一步——对方打开任务管理器或启动文件夹就能看到。所以文件名要伪装成system_check.vbs或update.vbs这类看起来正常的名字。注意:不要写注册表 Run 键,那个需要管理员权限,而且杀毒软件会报警。

4. 避坑与排查:整人代码翻车的五个血泪教训

4.1 弹窗关不掉,对方直接拔电源

现象:循环弹窗次数太多或没有 Sleep,弹窗叠满屏幕,对方点不过来,直接长按电源键关机。 原因:For循环次数设成几百次,或者Do While True没有退出条件,弹窗速度超过人手点击速度。 解决:次数控制在 10 次以内,每次间隔至少 1000 毫秒。如果想让对方能关掉,加一个vbYesNo按钮,点“否”就退出循环。

4.2 模拟按键打到错误窗口,把别人文档删了

现象:脚本用SendKeys发了一串按键,结果对方当前窗口是 Word,按键把正在写的文档内容替换了。 原因:SendKeys是发给当前活动窗口的,脚本无法控制对方当时在用什么程序。 解决:模拟按键前先shell.AppActivate "记事本"把目标窗口激活,或者干脆不用 SendKeys,改用弹窗和声音。整人不要碰对方的工作内容。

4.3 脚本在别人机器上双击没反应

现象:你发过去的 .vbs 文件,对方双击后什么都没发生,或者弹出一个“无法打开”的提示。 原因:对方系统禁用了 Windows Script Host,或者 .vbs 默认打开方式被改成了记事本。 解决:让对方检查注册表HKEY_CLASSES_ROOT\.vbs的默认值是不是VBSFile。如果是被安全软件拦截,需要把脚本加白名单。但说实话,如果对方机器有这类防护,就别硬整了,换台机器或换个方式。

4.4 假蓝屏被 Alt+F4 一秒关掉

现象:全屏 IE 窗口刚显示出来,对方按了 Alt+F4 就关掉了,根本没吓到。 原因:IE 窗口是普通窗口,Alt+F4 是系统级关闭快捷键,全屏也拦不住。 解决:可以配合BlockInput短暂禁用键盘,或者用WScript.Shell发{ESC}干扰,但效果有限。更好的做法是假蓝屏只作为开场,后面接弹窗和声音,让对方关了一个还有一个。

4.5 脚本把自己也整了,无限循环关不掉

现象:你测试脚本时,弹窗循环停不下来,任务管理器里一堆 wscript.exe,自己也关不掉。 原因:Do While True没有退出条件,而且每次循环都创建新对象,内存越吃越多。 解决:测试时一定加一个退出条件,比如按某个键就退出,或者用WScript.Quit在特定次数后强制结束。任务管理器里结束wscript.exe进程可以强制停止,但如果有多个进程要一个个结束。血泪经验:先在虚拟机里跑,别在自己主力机上跑无限循环。

5. 整人脚本的收尾技巧:怎么让对方笑着原谅你

整人代码最怕的不是技术实现,而是对方真的生气。我自己的习惯是:所有整人脚本最后都留一个“和解”按钮或提示,让对方知道这是玩笑。比如在弹窗最后加一句“别生气,请你喝奶茶”,或者用MsgBox的vbYesNo按钮,点“是”就打开一个搞笑图片,点“否”就退出。下面这个收尾脚本会在弹窗后打开一个网页,显示“整人结束,抱歉抱歉”。

' 收尾:弹窗道歉并打开一个本地图片 MsgBox "整人结束,别生气哈!", vbOKOnly + vbInformation, "道歉" Set shell = CreateObject("WScript.Shell") shell.Run "mspaint.exe C:\Windows\Web\Wallpaper\Windows\img0.jpg"

mspaint.exe打开画图并加载一张系统壁纸,对方看到图片就知道是玩笑了。关键是时机:整人时间不要超过 30 秒,弹窗不超过 5 次,声音不超过 10 秒。超过这个度,再好的关系也会翻脸。另外,绝对不要在对方开会、演示、赶 deadline 的时候整,那是给自己找麻烦。我一般会选周五下午快下班时,大家心情放松,笑一笑就过去了。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询