通过脚本让电脑实现模拟按键(一直在线功能): VBScript/JScript/PowerShell
本文详细讲诉了用脚本实现定时模拟计算机按键,用于保持系统一直在线的状态。脚本可以使用VBScript、JScript和Powershell。这三种脚本语言都是微软/Microsoft的,不过前两种已经要被淘汰了。
在 Windows 环境下,这三种脚本(PowerShell、VBScript 和 JScript)都通过 CreateObject 来调用 COM 对象 WScript.Shell,以实现模拟按键的功能。例如,可以每隔一分钟模拟按下 Scroll Lock 键一次,从而保持“在线”状态(Keep Alive)。Scroll Lock 键在某些键盘上可能不存在,其作用是切换滚动锁定状态,连续按两次不会对系统造成实际影响。
模拟按键:自动化任务脚本
有时候,你可能想模拟按键(键盘输入),例如为了自动化一些任务,相比查找 API 并写脚本,通过重复按键可能更简单。例如,你想打开任何聊天窗口并输入 “Hello!” 100 次,可以使用 PowerShell 编写一个脚本,它先暂停几秒钟,然后模拟按键。
你可以通过在 Windows 中使用 PowerShell 脚本创建 Wscript.Shell
COM 对象来实现。
$WShell = New-Object -com "Wscript.Shell" $WShell.sendkeys("Hello!")
要重复 100 次,可以在 PowerShell 中使用 FOR 循环:
$WShell = New-Object -com "Wscript.Shell" for (($i = 0), ($j = 0); $i -lt 10; $i++) { $WShell.sendkeys("Hello!") $WShell.sendkeys("{ENTER}") }
要运行一个 PowerShell 脚本,例如 .ps1 文件,你可以在 PowerShell 提示符中输入该脚本的完整路径。PowerShell 提示符也支持逐行输入 PowerShell 语句。
Powershell 脚本通过按键保持在线
基于这个方法,我们可以每隔一段时间发送 Scroll-Lock 按键,直到脚本被终止。一些键盘甚至没有 Scroll-Lock 键。这个思路是模拟按键,使你的聊天程序(如 Microsoft Teams、Slack、Discord、Google Chat、Telegram 等)认为你仍然在线,从而不会将你的状态设置为 “离开”(AFK)。
$WShell = New-Object -com "Wscript.Shell" while ($true) { $WShell.sendkeys("{SCROLLLOCK}") Start-Sleep -Milliseconds 100 $WShell.sendkeys("{SCROLLLOCK}") Start-Sleep -Seconds 120 }
VBScript脚本自动按键
Microsoft VBScript 简单又方便。以下是 VBScript 版本。你可以将脚本保存为 .vbs 文件并双击运行。或者在命令行中通过 “start.exe send-keys.vbs” 或 “cscript.exe send-keys.vbs” 运行它(假设脚本名为 send-keys.vbs)。
Dim WShell Set WShell = CreateObject("Wscript.Shell") Const ASecond = 1000 Const AMinute = 60000 While True WShell.SendKeys "{SCROLLLOCK}" WScript.Sleep ASecond WShell.SendKeys "{SCROLLLOCK}" WScript.Sleep AMinute Wend
JScript脚本自动按键
Microsoft JScript 类似于 Javascript,也可以在 Windows 上运行。以下是 JScript 版本,你可以用和 VBS 相同的方法来运行。
// alternatively // var WShell = WScript.CreateObject("Wscript.Shell"); var WShell = new ActiveXObject("Wscript.Shell"); var ASecond = 1000; var AMinute = ASecond * 60; for (;;) { WShell.SendKeys("{SCROLLLOCK}"); WScript.Sleep(ASecond); WShell.SendKeys("{SCROLLLOCK}"); WScript.Sleep(AMinute); }
顺便提一下,JScript 不支持 const 关键字和现代 Javascript 的其他语法特性。
总结
本文展示了如何使用 PowerShell、VBScript 或 JScript 来模拟按键。一种用途就是通过模拟 SCROLLLOCK 按键来让你的聊天软件(如 Slack、Discord、Microsoft Teams、Telegram 等)显示为 “一直在线”。此外,如果你不希望电脑在你离开键盘时进入睡眠状态(尽管可以通过设置来控制),这类脚本也会派上用场。
需要注意的是,由于安全原因,这类脚本(创建 WScript.Shell COM 对象)可能会被公司的安全策略所屏蔽。不过,你仍然可以在 PowerShell 终端中逐行输入命令来绕过限制。
本文一共 723 个汉字, 你数一下对不对.
相关文章:
- Chrome 浏览器上的快速标签链接 我很久之前练手PHP和MYSQL做了一个长网址变短的小工具(免费) https://rot47.net/_url/. 添加记录的表单在: https://rot47.net/_url/add.php 这样还是太麻烦, 因为用户还得拷贝和粘贴网址, 为了方便, 在PHP程序里支持从URL参数里获取想添加的长网址, 比如可以这样使用: https://rot47.net/_url/add.php?p=https://helloacm.com 然后, 我们就可以把下面HTML+JAVASCRIPT的代码放到页面上, 让用户添加成标签(可以直接把这个链接拖到上面的快速标签栏) <a rel="nofollow"...
- 新的旅途 – 离别总是伤感的, 离开了一起创业的公司 2周前, 正式离开了一起创业的公司, 这公司是我博士毕业后的第一份正式工作, 待了8年多了, 离别总是伤感的. 我是9月初提的离职, 三个月 Notice Period, 最后的几周交接完工作确实没有什么压力了. 11月30号, 在公司最后一天, 公司有个习惯, 对于 Good...
- 租车被收了两份保险钱 前不久去北爱游玩的时候在 booking.com/rentalcars.com 上租了车, 当时一共付了92英镑, 其中36英镑多是保险钱. 然而, 当飞机落地后我去 Budget 取车的时候又交了92英镑钱. 当时我在柜台的时候就有点犹豫, 但是没办法, 必须交, 不交就不给钥匙. 当然92英镑还包括路税. 后来回来就想想不对劲,...
- 测测你的幸运 – Linux Fortune-Teller LINUX 下有很好很好玩的命令,之前已经介绍过: figlet, rig, curl. 现在推荐另一个 命令 fortune 是用来随机显示一段(句)话的.fortune 在英文里就是幸运的意思. 这个命令可以不需要 参数 如果没有 可以通过 apt-get...
- Minuet in C – 小步舞曲C Posted Youtube – 油管地址 孩子弹琴的时候最帅了. 我现在成了我儿子的粉丝了. Eric (Aged 6) is playing “Minuet in C” when...
- 上了年纪痛风脚崴了的惨痛经历(尿酸过高) 痛风是一种疼痛性关节炎, 当血液中的尿酸水平高, 导致晶体形成并积聚在关节内或关节周围, 就会发生痛风. 当人体分解一种叫做嘌呤的化学物质时, 就会产生尿酸. 嘌呤自然存在于您的身体中, 也存在于某些食物中. 尿酸通过尿液从体内排出. 上两周, 和媳妇吵架, 然后就自己一人睡, 有一天起床后脚踝就开始疼了, 然后明显比左脚肿了. 我刚开始就以为是睡觉的时候不小心姿势不对,...
- 优衣库 感觉像炒作 这几天 这个在北京三里屯 ‘优衣库’ 试衣间自拍的视频真的很火, 男女主角均被人肉. 不可否认 这个效果还真的不错 因为我之前根本不知道 “优衣库” 是干嘛的 很刺激 在试衣间XXOO是多么爽的事情 女主角 95后妹子 长相甜美....
- 今晚可能是英国倒数第三次冬令时时间调整 来英国生活过的人都知道 英国有一个很有意思的夏令时和冬令时时间调整. 夏令时是每年3月份的最后一个星期天凌晨会暴力的把时间往后调整1个小时, 也就是1点的时候很神奇的时间会自动变成2点. 冬令时是相反, 在每年的十月份最后一个周日凌晨暴力的把时间往前调整一个小时, 也就是2点神奇的变成1点. 现在大多数电子设备都能自动调整时间了, 比如你的智能手机和电脑. 但是传统的一些钟表, 还需要人为的调整时间. 夏令时 (Daylight Saving Time)调整的那一天,...