VBS 脚本适用于 XP 32 位但不适用于 7 64 位

Posted

技术标签:

【中文标题】VBS 脚本适用于 XP 32 位但不适用于 7 64 位【英文标题】:VBS script works on XP 32-bit but not on 7 64-bit 【发布时间】:2011-01-06 20:28:49 【问题描述】:

这个脚本(Rob van der Woude 的一个修改)在 XP 32 位上运行良好,但在 7 64 位上失败Set objDialog = CreateObject( "UserAccounts.CommonDialog" ),出现类似于错误(翻译自荷兰语)ActiveX cannot create the object "UserAccounts.CommonDialog" .是否有一些不同的方法我必须这样做才能与 Windows 7 兼容?

MsgBox("Your input avi MUST be 60fps, or this script will not work."),0,"IMPORTANT!"

MsgBox("Please select the location of your AVI."),0,"AVI location"

WScript.Echo GetFileName( "", "AVI files (*.avi)|*.avi" )

Function GetFileName( myDir, myFilter )

    Dim objDialog
    Set objDialog = CreateObject( "UserAccounts.CommonDialog" )
    If myDir = "" Then
        objDialog.InitialDir = CreateObject( "WScript.Shell" ).SpecialFolders( "MyDocuments" )
    Else
        objDialog.InitialDir = myDir
    End If
    If myFilter = "" Then
        objDialog.Filter = "All files|*.*"
    Else
        objDialog.Filter = myFilter
    End If

    If objDialog.ShowOpen Then
        GetFileName = objDialog.FileName
    Else
        GetFileName = ""
    End If
End Function

【问题讨论】:

你有CreateObject失败的错误代码吗? How can I use the common Save As dialog from VBScript?的可能重复 【参考方案1】:

有一些在线证据表明“UserAccounts.CommonDialog”未随 Windows Vista(以及因此,Windows 7)提供。

例如,请参阅http://www.msghelp.net/showthread.php?tid=88579

该线程中的最后一项建议使用 MSComDlg.CommonDialog,但有一些注意事项,或者使用 GetOpenFileName API。

如果不是这样,请检查您的注册表,并在执行 CreateObject 时检查 ProcMon 中的脚本操作。您可能遇到“位”问题,您的脚本在 64 位进程中运行,但尝试访问 32 位 COM 对象。如果是这种情况,您也会在 CreateObject("WScript.Shell") 看到错误。

【讨论】:

@David Heffernan,@neurolysis:部分是正确的...您不能直接从 VBScript 调用本机 Windows API 函数,所以 GetOpenFileName 不会去工作。没有“位”问题,UserAccounts.CommonDialog 只是一个丑陋的 hack,只能在 Windows XP 中使用。 MSComDlg.CommonDialog 也不是一个好的解决方案。不久前有人提出并回答了一个试图解决根本问题的问题:How can I use the common Save As dialog from VBScript?。【参考方案2】:

也许您需要重新注册 comdlg32.dll? Reference

【讨论】:

以上是关于VBS 脚本适用于 XP 32 位但不适用于 7 64 位的主要内容,如果未能解决你的问题,请参考以下文章

import pymongo 适用于 Python 解释器,但不适用于脚本

渐变背景适用于 iOS 8 但不适用于 iOS 7

代码适用于 CLR 项目,但不适用于 Win32

sql 脚本适用于 MySQL,但不适用于 google bigquery

Python 导入适用于解释器,不适用于脚本 Numpy/Matplotlib

PHP 脚本适用于笔记本电脑,但不适用于服务器