标题: [问题求助] 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,还是注册不了。
最后无解了,只能求助各位!
急!希望各位能大力帮助啊!
多谢多谢!!!
附上代码:- Set WshShell=createobject("wscript.shell")
- WScript.Sleep 200
-
- Set FSO = CreateObject("Scripting.FileSystemObject")
- Set Form = WScript.CreateObject("Forms.Form.1")
- Set TextBox = Form.Controls.Add("Forms.TextBox.1").Object
- TextBox.Multiline = True
- Set GF = FSO.OpenTextFile("E:\LittleCode\ahk\EISP.txt",1)
- TextBox.Text = GF.ReadAll
- With TextBox
- .Selstart = 0 'Min
- .Sellength=Len(.Text)
- .Copy
- End With
-
- WshShell.SendKeys "^v"
-
- WshShell.Run "E:\LittleCode\ahk\CleanClip.bat /start",0
-
- WScript.Sleep 200
- WshShell.SendKeys "{TAB 36}"
- WScript.Sleep 200
- WshShell.SendKeys "{Enter}"
- WScript.Sleep 1000
- WshShell.SendKeys "{Enter}"
复制代码
作者: yu2n 时间: 2014-12-8 11:57
目测是第5行“Forms.Form.1”语句引起的问题,后面的语句也跟着出错了。
你的电脑缺少 Microsoft Forms 2.0 Object Library 组件,安装 Office2007 应该能够解决这个问题。
如果你的电脑安装有Office,复制文本到剪贴板还可以使用以下的语句:- REM 标题: VBS访问剪贴板的几种方法
- REM 作者: Demon
- REM 链接: http://demon.tw/programming/vbs-clipboard.html
- REM 用Word.Application也可以设置和获取剪贴板内容
-
- '设置剪切板的内容
- Dim Word
- Set Word = CreateObject("Word.Application")
- Word.Documents.Add
- Word.Selection.Text = "忘记了,喜欢一个人的感觉"
- Word.Selection.Copy
- Word.Quit False
-
- '获取剪切板的内容
- REM Dim Word
- Set Word = CreateObject("Word.Application")
- Word.Documents.Add
- Word.Selection.PasteAndFormat(wdFormatPlainText)
- Word.Selection.WholeStory
- str = Word.Selection.Text
- Word.Quit False
- 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 ,然后运行,你会发现,系统实际上是用的到那个组件的:- <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf8">
- <title>TEST</title>
- <script language=VbScript>
- REM 标题: VBS访问剪贴板的几种方法
- REM 作者: Demon
- REM 链接: http://demon.tw/programming/vbs-clipboard.html
-
- '设置剪切板的内容
- Dim Form, TextBox
- Set Form = CreateObject("Forms.Form.1")
- Set TextBox = Form.Controls.Add("Forms.TextBox.1").Object
- TextBox.MultiLine = True
- TextBox.Text = "忘记了,喜欢一个人的感觉"
- TextBox.SelStart = 0
- TextBox.SelLength = TextBox.TextLength
- TextBox.Copy
-
- '获取剪切板的内容
- Set Form = CreateObject("Forms.Form.1")
- Set TextBox = Form.Controls.Add("Forms.TextBox.1").Object
- TextBox.MultiLine = True
- If TextBox.CanPaste Then
- TextBox.Paste
- Msgbox TextBox.Text
- End If
- </script>
- </head>
- <body></body></html>
复制代码
运行一下,找个文本框按一下Ctrl+V,看看剪贴板里面的文字,是不是已经改变了。
作者: CrLf 时间: 2014-12-9 01:14
64 位进程好像无法调用 32 位控件
改用 C:\Windows\SysWOW64\wscript.exe 来运行 vbs 就好了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |