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
以上代码经本人测试完美有效,结贴~~~
发表评论
-
Java IO 技术之基本流类
2012-01-20 09:03 634Java IO 技术之基本流类 ... -
多线程渲染(Multithreaded- rendering)3D引擎实例分析 : FlagshipEngine
2012-01-20 09:03 1052多线程渲染(Multithreaded- rendering) ... -
tomcat 优化(转)
2012-01-20 09:03 731tomcat 优化(转) 2010年08 ... -
Windows Sockets 错误码
2012-01-20 09:03 787Windows Sockets 错误码 2010 ... -
Linux音频设备驱动-2【转】
2012-01-20 09:03 1388Linux音频设备驱动-2【转】 2011年01月20日 ... -
VBS WScript.Shell 隐藏cmd命令行
2012-01-19 14:07 1554VBS WScript.Shell 隐藏cmd命令行 201 ... -
全自动申请qq号vbs代码
2012-01-19 14:07 649全自动申请qq号vbs代码 2011年08月25日 下面 ... -
利用VBS创建快捷方式
2012-01-19 14:07 1268利用VBS创建快捷方式 2010年06月19日 利用VB ... -
谈VBS在Hacking中的作用-挑选网速快的肉鸡
2012-01-19 14:07 544谈VBS在Hacking中的作用-挑选网速快的肉鸡 2011 ... -
2011-1-20
2012-01-17 03:57 6952011-1-20 2011年01月20日 ... -
完成端口的一些问题
2012-01-17 03:57 578完成端口的一些问题 2010年11月23日 测试完成端口 ... -
WINDOWS XP 桌面主题的安装制作
2012-01-17 03:57 1026WINDOWS XP 桌面主题的安装制作 2011年04月1 ... -
2011-12-3
2012-01-17 03:56 7172011-12-3 2011年12月03日 已解决问题收 ... -
电脑高手应用技巧荟萃(电脑知识二十六)
2012-01-17 03:56 527电脑高手应用技巧荟萃(电脑知识二十六) 2010年12月07 ... -
Socket之编程巩固篇
2012-01-16 02:45 651Socket之编程巩固篇 2010 ... -
Android Socket编程
2012-01-16 02:45 598Android Socket编程 2010年10 ... -
[转]用c语言实现ping程序
2012-01-16 02:45 572[转]用c语言实现ping程序 ... -
Socket UDP
2012-01-16 02:45 692Socket UDP 2009年10月13日 这是C++ ... -
socket编程
2012-01-16 02:45 590socket编程 2009年10月21日 在OSI的 ...
相关推荐
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命令运行需要管理用户授权的程序或批处理文件,并自动输入密码,真正...