VBS利用SendKeys输入中文字符的方法
2011年09月28日
首先我们看一个输入字母的例子:
复制代码 代码如下:
set s = WScript.CreateObject("WScript.Shell")
app=s.Run ("C:\windows\notepad.exe")
code="biweilun"
WScript.Sleep 1000
s.AppActivate app
s.SendKeys code
Wscript.quit
这段vbs会SendKeys方法的朋友就知道,作用是打开一个记事本,然后把"biweilun"这串字符输入进去,当然,你可以把code参数换成chr(97),那么你会发现自动输入到记事本里面的是一个"a"字符。那么,你把code参数的值换成一个chr(一个汉字的ASCII码)行不行呢?可以肯定的告诉你,不行。
我们通过调用一个IE的对象,这样可以使用其内置的剪贴板元素,将"毕伟伦"这个字符串放进了剪贴板,然后通过Wsh对象来SendKey "^v"粘贴剪贴板内容,这样就能实现vbs自动输入中文字符了。
但是呢,这个方法有个缺憾,就是它会打开一个IE的窗口,不够完美,虽然不影响输入字符。所以我在探索一种完美的方案,得知一个对象“htmlfile”,很可惜的是该对象只能读取剪贴板,却不能写剪贴板。我们来看一段代码,怎么弹出你的剪贴板内容,你要先复制一段字符:
Set biweilun=CreateObject("htmlfile").parentWindow.clipboardData
WScript.Echo biweilun.GetData("text")
运行这个代码,你会发现你剪贴板的东西弹出来了。在IE对象里,有SetData函数来写剪贴板,GetData函数来读剪贴板,在htmlfile对象里呢,也有这两个函数的。你会想到是不是可以用htmlfile对象的SetData先来向剪贴板中写入中文字符,然后再SendKeys呢?这样岂不是很完美,既解决了中文输入问题,又没有网页弹出。呵呵,想法是好的,我也这么想过,可是不行!!
htmlfile对象在使用中只能GetData来获取剪贴板,对于SetData函数系统却不给它写的权限!呵呵,郁闷吧?但是htmlfile对象中的SetData函数确实是存在的,只是无法使用而已。不信的话读者可以自己尝试如下代码,脚本不会报错的,如果没有这个函数的话,Wscript会报错的:
复制代码 代码如下:
Set biweilun=CreateObject("htmlfile").parentWindow.clipboardData
biweilun.SetData "text","毕伟伦"
WScript.Echo biweilun.GetData("text")
在vbs牛人UMU的空间上看到,据他讲有这么一条DOS命令,可以来写字符串到剪贴板中:
echo biweilun| clip.exe 就是用DOS命令把biweilun这串字符写入剪贴板了。经本人测试,该命令不成立,UMU的思路是这样来默默地后台写剪贴板:
objWSH.Run "cmd.exe /c echo " & szBuf & "| clip.exe", vbHide
如果这个DOS命令能真的实现就好了,那么SendKeys中文字符就太完美了。我到网上翻了很久,没有找到任何关于他所谓的clip.exe的资料和参数等等东东。
Vbs利用SendKeys输入中文字符,还是有那么一点遗憾~~~
7月28日补充内容如下:
经过UMU大哥的提点,原来上文提到的clip.exe只在Win2003下才有,WinXP是没有的,那怪我不能实现后台Windows写剪贴板的DOS命令
现将Win2003中的Clip.exe上传上来,请大家首先下载clip.rar 下载后解压缩,把得到的clip.exe复制到 %systemroot%\system32文件夹下面即可。现在vbs用SendKeys输入中文字符的问题得以完美解决了,前提是有clip.exe的支撑。
代码如下:
复制代码 代码如下:
Set wshobj=WScript.CreateObject("WScript.Shell")
code="你想输入的中文"
wshobj.Run "cmd.exe /c echo " & code & "| clip.exe", vbHide
app=wshobj.Run ("C:\windows\notepad2.exe")
WScript.Sleep 1000
wshobj.AppActivate app
wshobj.SendKeys "^v"
Wscript.Quit
以上代码经本人测试完美有效,结贴~~~
发表评论
-
批处理不显示dos窗口
2012-01-20 10:05 697批处理不显示dos窗口 2010年07月26日 两段运行 ... -
Office Powershell Cookbook (Office powershell 常见操作)
2012-01-20 10:05 571Office Powershell Cookbook (Off ... -
【转】WMA Lossless Decoder
2012-01-20 10:05 803【转】WMA Lossless Decoder 2010年0 ... -
PHP笔试题2
2012-01-20 10:05 670PHP笔试题2 2011年04月24 ... -
QTP录制Delphi客户端
2012-01-20 10:05 551QTP录制Delphi客户端 2010 ... -
谈VBS在Hacking中的作用-挑选网速快的肉鸡
2012-01-19 15:07 646谈VBS在Hacking中的作用-挑选网速快的肉鸡 2011 ... -
VBS整人代码 很多 测试把我给整安逸了
2012-01-19 15:06 982VBS整人代码 很多 测试把我给整安逸了 2010年08月2 ... -
利用VBS让QQ永远在线
2012-01-19 15:06 567利用VBS让QQ永远在线 201 ... -
VBS Runas 自动明文的输入密码
2012-01-19 15:06 828VBS Runas 自动明文的输入密码 2010年06月23 ... -
X Window 设定介绍(2)
2012-01-17 04:53 522X Window 设定介绍(2) 2010年06月05日 ... -
linux 下的mplayer安装
2012-01-17 04:53 630linux 下的mplayer安装 2010年07月28日 ... -
KKCapture视频录像软件下载
2012-01-17 04:53 902KKCapture视频录像软件下 ... -
cegui基础2
2012-01-17 04:53 606cegui基础2 2010年11月25日 cegui 2 ... -
Motorola(摩托罗拉)比较不错的机子,直接秒杀诺基亚N8,不看看你会后悔的哦。。。
2012-01-17 04:53 655Motorola(摩托罗拉)比较不错的机子,直接秒杀诺基亚N8 ... -
正则表达式的写法(转)
2012-01-16 03:44 696正则表达式的写法(转) 2010年12月22日 正则表达 ... -
AS3常用正则表达式
2012-01-16 03:44 810AS3常用正则表达式 2009年07月04日 正则表达式 ... -
理解 Flex itemRenderer - 内联渲染器
2012-01-16 03:44 680理解 Flex itemRenderer - 内联渲染器 2 ... -
flash/flex开源框架aswing教程1
2012-01-16 03:44 662flash/flex开源框架aswing教 ... -
flex各种用法
2012-01-16 03:44 517flex各种用法 2010年02月22日 //获得屏幕的 ...
相关推荐
QTP利用VBS的SendKeys模拟键盘操作
在vbscript中我们可以object.SendKeys模拟键盘操作,将一个或多个按键指令发送到指定Windows窗口来控制应用程序运行,,需要的朋友可以参考下
str代表总字符串,toSearch代表要查找的字符串,适用QTP&UFT;&VBS;,'如有以下例子 str="asasaasasasasasasas485645225" '总字符串 toSearch="as" '要查找的字符 'Call FindCount(Str,toSearch)'使用这个就会弹出结果...
VBS语言,一个发送键盘的VBS语言。好东东。如:wshshell.sendkeys "{F5}" 'F5按钮
vbs字符串长度脚本,解决中文长度计算,多用于QTP自动化测试
今天有人问我如何向APPlication 发送双引号,分号等,我在这里做一个总结,方便你使用参考
看到demon.tw的文章,发现的sendkeys 16进制的效果,非常的不错,喜欢的朋友可以参考下。
下表显示了十六进制符号常量名,,由系统所使用的虚拟键码和鼠标或键盘等值。这些代码数字顺序列出。
本文详细介绍了vbscript中split函数的用法,有关split函数的一些实例,vbscript中split函数的语法介绍,有需要的朋友参考下
VBS读取Wincc归档变量(数值和字符串)的程序源码
◎Vbs脚本编程简明教程之九—妙用SendKeys简化重复操作1 ◎Vbs脚本编程简明教程之九—妙用SendKeys简化重复操作2 ◎Vbs脚本编程简明教程之九—妙用SendKeys自动上网并登陆博客3 ◎Vbs脚本编程简明教程之十—...
vbs字符串分割函数,将字符中如入指定分割字符,需要的朋友可以参考下。
在VBS中用三种方法,读取和写入二进制文件。
软件安装无管理员权限的user账户的PC客户端只能使用第三方工具,但又担心不安全,本工具是系统自带vbs支持的,简单代码来实现以vbs文件调用runas命令运行需要管理用户授权的程序或批处理文件,并自动输入密码,真正...
主要介绍了vbs 获取字符串也就是截取字串,需要的朋友可以参考下
通过该脚本,可实现仿打印机效果的自动输入操作. 比如,自动输入密码,自动输入代码
VBS实例 44个 vbs脚本实例, VBS取QQ-TM号码的自动登录命令行.vbs 妙用脚本清除电脑中的痕迹.vbs 后台字典文件管理器.vbs ...中文姓名笔画计算(VBS脚本版).vbs 利用VB编写文本朗读精灵.vbs 。。。。。。。。。。。
打开QQ并且让它自己输入用户名和密码的vbs脚本.pdf
软件安装无管理员权限的user账户的PC客户端只能使用第三方工具,但又担心不安全,本工具是系统自带vbs支持的,简单代码来实现以vbs文件调用runas命令运行需要管理用户授权的程序或批处理文件,并自动输入密码,真正...