Script VBS fonctionne sur XP 32 bits, mais pas sur 7 64-bit
Ce script (une modification de l'un de Rob van der Woude s) fonctionne très bien sur XP 32 bits, mais échoue sur 7 64-bit à Set objDialog = CreateObject( "UserAccounts.CommonDialog" )
, avec quelque chose de semblable à l'erreur (traduit du néerlandais) ActiveX cannot create the object "UserAccounts.CommonDialog"
. Est-il une manière différente que je dois faire pour qu'il soit compatible avec 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
- Avez-vous un code d'erreur pour la méthode CreateObject échec?
- Double Possible de Comment puis-je utiliser les Enregistrer en tant Que boîte de dialogue à partir de VBScript?
Vous devez vous connecter pour publier un commentaire.
Il existe certaines preuves en ligne que "UserAccounts.CommonDialog" n'a pas été fourni avec Windows Vista (et donc, Windows 7).
Voir, par exemple, http://www.msghelp.net/showthread.php?tid=88579
La dernière entrée dans ce thread suggère l'utilisation de MSComDlg.CommonDialog, avec quelques mises en garde, ou d'utiliser l'API GetOpenFileName.
Si ce n'est pas ça, puis examinez votre base de registre, et d'inspecter le script d'actions de la ProcMon au point où il exécute la fonction CreateObject. Vous pouvez avoir un "type d'installation" problème, où votre script s'exécute dans un processus 64 bits, mais de tenter d'accéder à une version 32 bits de l'objet COM. Si c'est le cas, vous allez voir un message d'erreur à CreateObject("WScript.Shell") ainsi.
GetOpenFileName
n'est pas d'aller travailler. Il n'y a pas de "type d'installation" problème, laUserAccounts.CommonDialog
était tout simplement un vilain hack qui n'a travaillé que dans Windows XP.MSComDlg.CommonDialog
n'est pas vraiment une bonne solution. Une question pour tenter de résoudre le problème à la racine a été demandé et répondu à un temps de retour: Comment puis-je utiliser les Enregistrer en tant Que boîte de dialogue à partir de VBScript?.Peut-être vous avez besoin de ré-enregistrer les comdlg32.dll?
Référence