开发者社区> 科技小先锋> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

用键盘模拟操作来实现另类关机方法

简介:
+关注继续查看

大家一定都知道批处理里面的shutdown,没错,是关机重启命令,快速关机可以用


  1. shutdown -s -t 0 -f 

当然重启可以这样写


  1. shutdown -r -t 0 -f 

两行代码中的-f,为强制关机。除了shutdown有没有想过其它的关机方法呢?不要和我说直接点开始关机,那样我们就不用在这里写博文了,halt?不对,那个是linux里面的关机命令,哈哈,不卖关子了,我们可以用批处理模拟一个关机操作,就是将我们平时的关机操作给记录下来,是不是觉得有点像键盘记录精灵,呵呵,差不多吧,来看看,代码很简单


  1. @echo off  
  2. mshta vbscript:createobject("wscript.shell").sendkeys("^{ESC}uu")(window.close) 

以上两行代码完成的就是我们平时的关机操作-开始->关机,如果你想测试一下代码是否可行,一定要把代码中的第二个u去掉,否则就真关机了。

说说原理吧,讲讲模拟键盘操作,这个主要是在vbscript中的,不过像上面那种情况也可以用于批处理,模拟键盘当然是要给键盘发送模拟指令,用到了sendkeys,这又是什么呢?听我慢慢道来。

1、SendKeys是什么?

一个能够模拟键盘命令的VBS中WScript.Shell对象的方法。

2、那怎么用?

要在一个VBS文件里面运行,当然批处理可以创建这个文件。
首先,创建WScript.Shell对象。然后就可以使用这个对象的SendKeys方法了。
格式是这样的: WScript.Shell对象名.SendKeys "[指令]"
例如:
WSH.SendKeys "^{ESC}uu"
这个命令是模拟键盘,开始菜单——关闭计算机——关闭,简单说就是模拟键盘关机!

3、有哪些指令?

基本上键盘有的键都可以用指令去模拟,除了Windows键和菜单键。
其中特殊指令符号有大中小括号键、百分比号键、加号键、阶乘键(插入记号)和波浪形键(“非”符号),即{}[]

()%+^~
除了中括号没有特殊的含义外,其他的均有特殊的作用。

四个常用符号:  + Shift键    % Alt键    ^ Ctrl键    ~ 回车键

{} 大括号是用得最广的符号,用于界定一切数字与字母外的键。 
例如:
ESC键 {ESC} 向上键 {UP} 退格键 {BACKSPACE} PageDown键{PGDN} F4键 {F4}
大括号键 {{} 加号键 {+} 百分号键 {%}

() 小括号,用于组合键事件。只有用在四个常用符号的后面才起作用。这个在下面谈。

4、有哪些特殊用法?

组合键和连按键。

组合键指令的第一个指令是那四个常用符号,后面可跟一个或多个非特殊符号指令。
例如:
^F Ctrl+F组合键    %{TAB} Alt+Esc组合键
+(sd) Shift+S+D组合键 ::注意,在使用多指令组合键时,要把特殊符号后的指令用小括号括起来。

连按键指令,顾名思义是同一个键按N次。格式为:{普通指令 数字}
例如:
{K 5} 连续按K键5次
::注意,连按键只能用于普通指令,不能用于那四个特殊指令符号。

5、有哪些技巧或注意的地方?

要注意:
一、指定发送指令的对象   二、处理延迟的现象
因此要用好WScript.Shell的AppActivate方法和脚本宿主的Sleep方法。

若指定发送的对象是新建的记事本,就要 WSH.AppActivate "无标题 - 记事本"
这样就不会把复制黏贴的指令传到QQ去了,如果内容不雅,还会被揍!
::注意,WSH.AppActivate 后面是一个窗口标题的字符串。

延迟现象的出现原因是计算机读取信息或输出信息时都需要一定的时间。
所以要按部就班,给计算机一段等待的时间,再执行下面的模拟指令。

例如:
Set WSH=CreateObject("WScript.Shell")
WSH.Run "Notepad.exe" '打开记事本
WSH.AppActivate "无标题 - 记事本" '激活记事本,赋予焦点
WScript.Sleep 1000 '休息1秒钟
WSH.SendKeys "^V" '复制剪贴板内容到记事本

上面这个基本就囊括了每个要点了。

看完后是不是明白了,杀毒软件序列号更换工具自动工作的原理了,呵呵,再来看一个例子

这个例子更改了记事本的默认字体,默认字体为楷体_GB2312 粗体 14

 


  1. @echo off  
  2. echo sub r(n)>fun.vbs  
  3. echo wscript.sleep n>>fun.vbs  
  4. echo end sub>>fun.vbs  
  5. echo sub k(a)>>fun.vbs  
  6. echo w.sendkeys a>>fun.vbs  
  7. echo end sub>>fun.vbs  
  8. echo s="VeryBat! The best!">>fun.vbs  
  9. echo set w=createobject("wscript.shell")>>fun.vbs  
  10. echo w.run "notepad.exe">>fun.vbs  
  11. echo r 1000>>fun.vbs  
  12. echo w.appactivate "无标题 - 记事本">>fun.vbs  
  13. echo for i = 1 to len(s)>>fun.vbs  
  14. echo k mid(s,i,1)>>fun.vbs  
  15. echo r 250>>fun.vbs  
  16. echo next>>fun.vbs  
  17. echo k "^a":r 250:k "%%of">>fun.vbs  
  18. echo r 250:k "%%s100~">>fun.vbs  
  19. echo createobject("sapi.spvoice").speak "fay troung peey troo lee luen tongue, war mern de jiao   
  20.  
  21. ao!">>fun.vbs  
  22. fun.vbs  
  23. del fun.vbs 

 本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/417617,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
万能脚本录制工具VIP版本(支持鼠标/键盘 前台/后台按键 支持模式更多更强大)
前言:鉴于很多朋友没有编程基础,无法自己制作脚本。本人编写了一款集录制脚本与执行脚本于一体的程序,并调用了大漠插件免费版本。使没有编程基础的同学也能制作自己的脚本。并引起了很多朋友的喜爱。并希望兼容更多的绑定模式。
4009 0
安卓使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)
继续在网上搜索安卓按键模拟(其实那时都不知道用什么关键字好了,能想到的关键字都用遍了,但是搜索出来的结果,都是之前提到的那几个依赖源码环境和系统权限的方案)。发现有很多介绍ADB调试,向手机发送按键事件的文章。
993 0
【技术贴】笔记本触摸板不灵敏|取消笔记本插入外置鼠标自动关闭触摸板鼠标
【技术贴】笔记本触摸板不灵敏|取消笔记本插入外置鼠标自动关闭触摸板鼠标|触摸板不灵敏的解决办法 今天发现装了笔记本自动关闭触摸板鼠标补丁之后,触摸板基本上就废了。所以就卸载触摸板驱动,发现好了。
1010 0
【技术贴】笔记本插入外置鼠标自动关闭触摸板鼠标
要实现笔记本插入外接的USB鼠标后自动禁用触摸板的设置,需要以下三个步骤。 1. 安装触摸板驱动,最新官方驱动下载地址:http://www.synaptics.com/support/drivers 选择适宜的版本安装 友情提示:如果你的本本已经安装有触摸板驱动了,你只需要看第2步,下载注册表文件,解压后按照顺序,双击导入注册表就可以了 2. 下载该补丁,导入到注册表。
839 0
模拟鼠标键盘操作(硬件模拟)
3.驱动级模拟(硬件模拟)  如果上面的方法你都试过了,可是你发现目标程序却仍然顽固的不接受你模拟的消息,寒~~~~~~~~~还好,我还剩下最后一招,这就是驱动级模拟:直接读写键盘的硬件端口!  有一些使用DirectX接口的游戏程序,它们在读取键盘操作时绕过了windows的消息机制,而使用DirectInput.这是因为有些游戏对实时性控制的要求比较高,比如赛车游戏,要求以最快速度响应键盘输入。
2444 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载