返回列表 发帖

[问题求助] 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}"COPY

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

评分人数

TOP

中文出错的问题,可能是你的代码文件没有按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>COPY
运行一下,找个文本框按一下Ctrl+V,看看剪贴板里面的文字,是不是已经改变了。
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

本帖最后由 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

谢谢!请问还有办法吗?

TOP

目测是第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 strCOPY
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

返回列表