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

简介:

大家一定都知道批处理里面的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,如需转载请自行联系原作者

相关文章
|
调度
MacBookPro外接显示器程序全屏状态,另一个显示器就黑屏
MacBookPro外接显示器程序全屏状态,另一个显示器就黑屏
713 0
MacBookPro外接显示器程序全屏状态,另一个显示器就黑屏
|
6月前
|
Windows
【已解决】电脑更新系统之后,键盘失灵了怎么办?
【已解决】电脑更新系统之后,键盘失灵了怎么办?
|
6月前
1033 旧键盘打字 (20 分)
1033 旧键盘打字 (20 分)
|
7月前
|
弹性计算 运维 Shell
测试开关机(while循环)
【4月更文挑战第29天】
47 0
|
7月前
|
程序员 开发工具
程序员的夜与电:为何不轻易按下“关机”键 ?
程序员的夜与电:为何不轻易按下“关机”键 ?
44 0
|
7月前
|
JSON 数据格式 Python
优秀!Python版按键精灵,电脑鼠标、键盘手势动作一键复制操作,优雅极了!
优秀!Python版按键精灵,电脑鼠标、键盘手势动作一键复制操作,优雅极了!
264 0
|
Windows
【笔记本解决触摸板手势失效的办法】
【笔记本解决触摸板手势失效的办法】
362 1
【笔记本解决触摸板手势失效的办法】
|
NoSQL Redis Windows
Windows服务简单一例,捕获关机信号做些处理
Windows服务简单一例,捕获关机信号做些处理
|
API Windows
【clswindow框架应用】自动移动鼠标避免锁屏,鼠标随机移动防止锁屏、待机、休眠
【clswindow框架应用】自动移动鼠标避免锁屏,鼠标随机移动防止锁屏、待机、休眠
730 0
【clswindow框架应用】自动移动鼠标避免锁屏,鼠标随机移动防止锁屏、待机、休眠
python小玩意——无限锁屏(重新开机可以恢复)
python小玩意——无限锁屏(重新开机可以恢复)