- 浏览: 28459 次
最新评论
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
以上代码经本人测试完美有效,结贴~~~
发表评论
-
字符串相关方法
2012-07-06 09:51 506字符串相关方法使 ... -
JavaScript用正则表达式验证表单
2012-07-06 09:44 651验证表单的不同内容用的是不同的正则表达式。 常用的正则 ... -
Actionscript正则表达式(二)
2012-07-06 09:36 1583Actionscript正则表达 ... -
Winform Change skin(DevExpress commerical commponents)
2012-07-06 09:29 1199Create a basic Form public pa ... -
【资料整理】Javascript中getElementsByName()和getElementById()的区别和用法
2012-07-05 20:44 584getElementsByName()定义和用法 ge ... -
重写Flex组件
2012-07-03 13:42 521一、为什么要重写 ... -
重写Flex组件
2012-07-03 12:15 511一、为什么要重写 ... -
Flex 动态datagrid的应用
2012-07-02 10:08 631Style Definitions */ p.MsoNor ... -
Flex 数据易犯错误: 常见误用和错误
2012-07-02 10:07 527在某些情形下,绑定操作似乎不能正常工作,此时你可能非常懊恼 ... -
Hello,Flex
2012-07-02 09:41 406... -
Qt学习之路(53): 拖放技术之二
2012-07-01 09:25 757很长时间没有来写博客了,前段时间一直在帮同学弄一个 spr ... -
通过Flash实现ASP.NET多文件上传
2012-07-01 09:24 732关于多文件上传, ... -
设置手机项目首选参数
2012-07-01 09:24 742Flash Builder 使用设 ... -
关于ActionScript 3.0 中方法重写和继承的发现
2012-07-01 09:24 612子类: package { import mx.contr ... -
flex 第三方库 大全
2012-06-30 11:11 562flex 第三方库 大全 2011年11月17日 下面总 ... -
Adobe Flex
2012-06-30 11:11 496Adobe Flex 2010年08月15日 ... -
Flex Builder2的基本知识[转]
2012-06-30 11:11 503Flex Builder2的基本知识[ ... -
Flex RSL
2012-06-30 11:11 553Flex RSL 2010年11月02日 ... -
memcached完全剖析
2012-01-20 08:31 598memcached完全剖析 2011年0 ... -
把Linux中的VFS对象串联起来
2012-01-20 08:31 919把Linux中的VFS对象串联起来 2010年06月21日 ...
相关推荐
本文将详细介绍QTP利用VBS的SendKeys模拟键盘操作的方法和技巧。 基本键 在使用SendKeys时,基本键可以直接用该按键字符本身来表示,例如要发送字母"a",使用`wshShell.Sendkeys "a"`,如果要发送字符串"happy",...
在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命令运行需要管理用户授权的程序或批处理文件,并自动输入密码,真正...