• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    VBS利用SendKeys输入中文字符的方法
      首先我们看一个输入字母的例子:
    复制代码 代码如下:

    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 


    以上代码经本人测试完美有效,结贴~~~
    您可能感兴趣的文章:
    • vbs sendKeys Virtual-Key Codes 十六进制符号
    • VBS sendkeys 模拟击键操作 问题解决
    • SendKeys clip.exe 发送中文的代码
    • vbscript sendkeys实例代码大全
    • VBS中SendKeys的基本应用
    • SendKeys参考文档
    • vbs sendKeys 16进制的结合使用(打开IE,静音,打开播放器等)
    上一篇:让IIS建立的站点默认是.net 2.0的,而不是.net 1.1的代码
    下一篇:vbs加administrator用户的代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    VBS利用SendKeys输入中文字符的方法 VBS,利用,SendKeys,输入,中文,