VBS скрипт работает на XP 32-битной, но не на 7 64-битной - PullRequest
1 голос
/ 06 января 2011

Этот скрипт (модификация одного из Роба ван дер Вуде) отлично работает на 32-битной XP, но не работает на 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

Ответы [ 2 ]

3 голосов
/ 07 января 2011

В Интернете есть некоторые доказательства того, что «UserAccounts.CommonDialog» не был поставлен с Windows Vista (и, следовательно, с Windows 7).

См., Например, http://www.msghelp.net/showthread.php?tid=88579

Последняя запись в этом потоке предлагает использовать MSComDlg.CommonDialog с некоторыми оговорками или использовать API GetOpenFileName.

Если это не так, то проверьте реестр и проверьте действия сценария в ProcMon в тот момент, когда он выполняет CreateObject. У вас может быть проблема «битности», когда ваш скрипт выполняется в 64-битном процессе, но пытается получить доступ к 32-битному COM-объекту. Если это так, вы также увидите ошибку в CreateObject ("WScript.Shell").

0 голосов
/ 07 января 2011

Возможно, вам нужно перерегистрировать comdlg32.dll? Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...