2011-01-06 7 views
1

이 스크립트 (Rob van der Woude의 수정본)는 XP 32 비트에서 제대로 작동하지만 7 64 비트의 경우 Set objDialog = CreateObject("UserAccounts.CommonDialog")에서 실패합니다. 그 오류와 비슷한 것 (네덜란드어 번역) ActiveX cannot create the object "UserAccounts.CommonDialog". Windows 7과 호환되도록이 작업을 수행해야하는 다른 방법이 있습니까?VBS 스크립트는 XP 32 비트에서 작동하지만 7 64 비트에서는 작동하지 않습니다.

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 
+0

CreateObject 오류에 대한 오류 코드가 있습니까? –

+0

[VBScript에서 다른 이름으로 저장 대화 상자를 사용하려면 어떻게합니까?] (http://stackoverflow.com/questions/4386124/how-can-i-use-the-common-save-as-dialog-from) -vbscript) – techie007

답변

3

온라인으로 "UserAccounts.CommonDialog"가 Windows Vista (및 Windows 7)와 함께 제공되지 않았다는 일부 증거가 있습니다.

은 참조 예를 들어, 해당 스레드에서 http://www.msghelp.net/showthread.php?tid=88579

마지막 항목은 몇 가지주의로, MSComDlg.CommonDialog의 사용을 제안, 또는 GetOpenFilename에 API를 사용합니다.

그렇지 않은 경우 레지스트리를 검사하고 CreateObject를 실행하는 시점에서 ProcMon에서 스크립트의 동작을 검사하십시오. 스크립트가 64 비트 프로세스에서 실행 중이지만 32 비트 COM 개체에 액세스하려고하면 "bitness"문제가 발생할 수 있습니다. 이 경우 CreateObject ("WScript.Shell")에서도 오류가 표시됩니다.

+0

나는 이것이 정확하다고 믿는다. –

+0

정보를 제공해 주셔서 감사합니다. :) –

+0

@David Heffernan, @ neurolysis : *이 부분은 정확합니다 ... VBScript에서 기본 Windows API 함수를 직접 호출 할 수 없으므로 GetOpenFileName이 작동하지 않습니다. "bitness"문제가 없으며,'UserAccounts.CommonDialog'는 Windows XP에서만 작동하는 못생긴 해킹이었습니다. 'MSComDlg.CommonDialog' 역시 좋은 해결책이 아닙니다. 근본적인 문제를 해결하기 위해 시도한 질문은 잠시 후에 답변을 받았습니다 : [VBScript에서 다른 이름으로 저장 대화 상자를 사용하려면 어떻게합니까?] (http://stackoverflow.com/questions/4386124/how-can-i-use) -the-common-save-as-dialog-from-vbscript). –

관련 문제