Board logo

标题: [问题求助] VBS无法创建object [打印本页]

作者: heart056571    时间: 2014-12-8 10:50     标题: VBS无法创建object

各位大神!求助一个问题。

win 7 x64下,双击运行vbs没问题,但是用命令调用打开这个vbs就报错,无法创建object
我另外一台win7 x64电脑打开这个文件就没问题,但是我记不起是运行过一条什么指令了(肯定是运行过的)。

网上好多说注册两个文件
regsvr32 WSHom.Ocx
regsvr32 wshext.dll
但是老是注册不成功

说要用管理员注册,但是我是用管理员,还用了administrator,还是注册不了。

最后无解了,只能求助各位!
急!希望各位能大力帮助啊!
多谢多谢!!!

附上代码:
  1. Set WshShell=createobject("wscript.shell")
  2. WScript.Sleep 200
  3. Set FSO = CreateObject("Scripting.FileSystemObject")
  4. Set Form = WScript.CreateObject("Forms.Form.1")
  5. Set TextBox = Form.Controls.Add("Forms.TextBox.1").Object
  6. TextBox.Multiline = True
  7. Set GF = FSO.OpenTextFile("E:\LittleCode\ahk\EISP.txt",1)
  8. TextBox.Text = GF.ReadAll
  9. With TextBox
  10. .Selstart = 0 'Min
  11. .Sellength=Len(.Text)
  12. .Copy
  13. End With
  14. WshShell.SendKeys "^v"
  15. WshShell.Run "E:\LittleCode\ahk\CleanClip.bat /start",0
  16. WScript.Sleep 200
  17. WshShell.SendKeys "{TAB 36}"
  18. WScript.Sleep 200
  19. WshShell.SendKeys "{Enter}"
  20. WScript.Sleep 1000
  21. WshShell.SendKeys "{Enter}"
复制代码

作者: yu2n    时间: 2014-12-8 11:57

目测是第5行“Forms.Form.1”语句引起的问题,后面的语句也跟着出错了。
你的电脑缺少 Microsoft Forms 2.0 Object Library 组件,安装 Office2007 应该能够解决这个问题。

如果你的电脑安装有Office,复制文本到剪贴板还可以使用以下的语句:
  1. REM 标题: VBS访问剪贴板的几种方法
  2. REM 作者: Demon
  3. REM 链接: http://demon.tw/programming/vbs-clipboard.html
  4. REM 用Word.Application也可以设置和获取剪贴板内容
  5. '设置剪切板的内容
  6. Dim Word
  7. Set Word = CreateObject("Word.Application")
  8. Word.Documents.Add
  9. Word.Selection.Text = "忘记了,喜欢一个人的感觉"
  10. Word.Selection.Copy
  11. Word.Quit False
  12. '获取剪切板的内容
  13. REM Dim Word
  14. Set Word = CreateObject("Word.Application")
  15. Word.Documents.Add
  16. Word.Selection.PasteAndFormat(wdFormatPlainText)
  17. Word.Selection.WholeStory
  18. str = Word.Selection.Text
  19. Word.Quit False
  20. WScript.Echo str
复制代码

作者: heart056571    时间: 2014-12-8 12:34

本帖最后由 heart056571 于 2014-12-8 12:40 编辑

回复 2# yu2n


我的电脑有安装Office
而且我双击运行都可以,就后台调用不行。
我打开cmd,指向这个vbs文件,都可以运行。
但是在后台用bat去调用这个vbs都调用不了。
而且我另一台电脑调用就完全没问题。但记不住有过什么设置了。
不知道是不是64位系统要让它默认运行32位的wscript,这个又不知道怎么设置了。

上午又测试了半天,发现这样可以实现
后台的bat里面这样写:
runas /user:administrator "C:\Windows\System32\wscript.exe E:\LittleCode\ahk\4.vbs"
关键这样密码又写不进去,每次运行还得输密码。达不到后台的效果了。

还有你给的代码,如果里面是中文就会报错。
Error:  Unterminated string constant
Code:  800a0409

谢谢!请问还有办法吗?
作者: yu2n    时间: 2014-12-8 18:46

中文出错的问题,可能是你的代码文件没有按ANSI/Unicode编码保存。

这种奇怪的报错我以前遇到过,总算翻出来了。用HTA可以解决出错的问题:
将以下代码保存为 0.HTA ,然后运行,你会发现,系统实际上是用的到那个组件的:
  1. <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf8">
  2. <title>TEST</title>
  3. <script language=VbScript>
  4. REM 标题: VBS访问剪贴板的几种方法
  5. REM 作者: Demon
  6. REM 链接: http://demon.tw/programming/vbs-clipboard.html
  7. '设置剪切板的内容
  8. Dim Form, TextBox
  9. Set Form = CreateObject("Forms.Form.1")
  10. Set TextBox = Form.Controls.Add("Forms.TextBox.1").Object
  11. TextBox.MultiLine = True
  12. TextBox.Text = "忘记了,喜欢一个人的感觉"
  13. TextBox.SelStart = 0
  14. TextBox.SelLength = TextBox.TextLength
  15. TextBox.Copy
  16. '获取剪切板的内容
  17. Set Form = CreateObject("Forms.Form.1")
  18. Set TextBox = Form.Controls.Add("Forms.TextBox.1").Object
  19. TextBox.MultiLine = True
  20. If TextBox.CanPaste Then
  21.     TextBox.Paste
  22.     Msgbox TextBox.Text
  23. End If
  24. </script>
  25. </head>
  26. <body></body></html>
复制代码
运行一下,找个文本框按一下Ctrl+V,看看剪贴板里面的文字,是不是已经改变了。
作者: CrLf    时间: 2014-12-9 01:14

64 位进程好像无法调用 32 位控件
改用 C:\Windows\SysWOW64\wscript.exe 来运行 vbs 就好了




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