Board logo

标题: [问题求助] [已解决]VBS如何通过SendKeys的方式发送出剪切板的内容? [打印本页]

作者: xgda    时间: 2014-6-22 21:29     标题: [已解决]VBS如何通过SendKeys的方式发送出剪切板的内容?

本帖最后由 xgda 于 2014-7-1 20:25 编辑

有一目标窗口,不能使用 ctrl+v 来粘贴剪切板的内容
也就是说不能使用  a.SendKeys "^v"
但能使用键盘敲出来

剪切板的内容为字母加数字,没有中文和符号
如剪切板的内容为 abcdefg
那就是 a.SendKeys "abcdefg"
但不能使用a.SendKeys "^v"

怎么才能用a.SendKeys的方式发送出剪切板的内容
作者: xgda    时间: 2014-7-1 20:24

已经好了,非常感谢   yu2n   坛友
  1. ' 延时
  2. WScript.Sleep 3000
  3. Dim wso, objHTML, strClipboardText
  4. Set wso = CreateObject("Wscript.Shell")
  5. Set objHTML = CreateObject("htmlfile")
  6. strClipboardText = objHTML.ParentWindow.ClipboardData.GetData("text")
  7. '测试
  8. 'strClipboardText = "测试 A1 + C2 = 100% ? "
  9. ' 方法一:直接 Ctrl + V
  10. wso.SendKeys "^v"
  11. wso.SendKeys "~"
  12. ' 方法二:拆分成单个字符发送,只支持按键字符(A-z,0-9,英文标点),会受输入法限制
  13. Dim i, strKey
  14. If Not strClipboardText = "" Then
  15.   For i = 1 To Len(strClipboardText)
  16.     ' 拆分成单个字符
  17.     strKey = Mid(strClipboardText, i, 1)
  18.     WScript.Sleep 300
  19.     ' 判断字符是否支持
  20.     If ASCW(strKey) > 0 And ASCW(strKey) < 127 Then
  21.       '' 特殊符号 + ^ % ~ 的处理
  22.       If InStr("+^%~", strKey) > 0 Then strKey = "{" + strKey + "}"
  23.       '' 发送按键码
  24.       wso.SendKeys strKey
  25.     End If
  26.   Next
  27. End If
  28. Set wso = Nothing
  29. Set objHTML = Nothing
复制代码

作者: yu2n    时间: 2015-1-3 20:23

本帖最后由 yu2n 于 2015-1-3 20:25 编辑

2015.01.03 更新:特殊字符“ +^%~(){} ”的处理 ..
http://bathome.net/redirect.php? ... 6&fromuid=53540




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2