VBS利用SendKeys输入中文字符的方法
- 博客分类:
- 技术杂绘
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
以上代码经本人测试完美有效,结贴~~~
发表评论
-
windows内存结构
2012-01-20 08:13 707windows内存结构 2011年06 ... -
内存映射文件
2012-01-20 08:13 727内存映射文件 2010年07 ... -
.net设计规范(四) 成员设计
2012-01-20 08:13 537.net设计规范(四) 成员设计 2011年04月27日 ... -
使用 OProfile for Linux on POWER 识别性能瓶颈
2012-01-20 08:13 639使用 OProfile for Linux on POWER ... -
并行计算--并发构造纵览
2012-01-20 08:13 650并行计算--并发构造纵览 2010年10月22日 作者简 ... -
利用VBS创建快捷方式
2012-01-19 13:29 784利用VBS创建快捷方式 2010年06月19日 利用VB ... -
谈VBS在Hacking中的作用-挑选网速快的肉鸡
2012-01-19 13:29 546谈VBS在Hacking中的作用-挑选网速快的肉鸡 2011 ... -
VBS整人代码 很多 测试把我给整安逸了
2012-01-19 13:29 630VBS整人代码 很多 测试把我给整安逸了 2010年08月2 ... -
利用VBS让QQ永远在线
2012-01-19 13:29 787利用VBS让QQ永远在线 201 ... -
delphi经典技艺
2012-01-17 03:19 707delphi经典技艺 2012年01月10日 http: ... -
行云流水
2012-01-17 03:19 608行云流水 2010年06月03日 行至水穷处,坐看云起 ... -
Android
2012-01-17 03:19 605Android 2010年06月30日 经过近段时间的观 ... -
学习光盘刻录必备基础知识
2012-01-17 03:18 691学习光盘刻录必备基础 ... -
最新【动漫爱好者系统】无忧GHOSTXP_SP3动漫主题装机版 V2010.10
2012-01-17 03:18 599最新【动漫爱好者系统】无忧GHOSTXP_SP3动漫主题装机版 ... -
全新的 2012
2012-01-16 01:53 550全新的 2012 2012年01月02日 新年第一天上班 ... -
【原创地带】职业病
2012-01-16 01:53 620【原创地带】职业病 20 ... -
《那些年丶不堪回首》③
2012-01-16 01:52 654《那些年丶不堪回首》 ... -
寻找异常退出终端上的进程
2012-01-11 01:49 705寻找异常退出终端上的进程 2011年09月01日 个别t ... -
notes on 'expert oracle'-no.4: memory areas-chenjianjx的专栏-iteye技术网站
2012-01-11 01:49 574notes on 'expert oracle'-no.4: ... -
一对一关联关系的使用-开心就好-iteye技术网站
2012-01-11 01:49 505一对一关联关系的使用- ...
相关推荐
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命令运行需要管理用户授权的程序或批处理文件,并自动输入密码,真正...