IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Set objDialog = CreateObject("UserAccounts.CommonDialog") sous Vista [FAQ]


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 22
    Points : 20
    Points
    20
    Par défaut Set objDialog = CreateObject("UserAccounts.CommonDialog") sous Vista
    Bonjour,

    J'utilise le script suivant pour permettre à l'utilisateur de sélectionner un fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set objDialog = CreateObject("UserAccounts.CommonDialog")
     
    objDialog.Filter = "All Files|*.*"
    objDialog.InitialDir = "C:\"
    intResult = objDialog.ShowOpen
     
    If intResult = 0 Then
        Wscript.Quit
    Else
        Wscript.Echo objDialog.FileName
    End If
    Sur Windows XP tout va bien, sur Vista, j'ai le message suivant :
    Un composant ActiveX ne peut pas créer un objet : 'UserAccounts.CommonDialog'

    Merci à tous ceux qui voudront bien m'aider...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    Salut,

    c'est peut-être lié à l'UAC. Essaie de la désactiver (le PC devra rebooter) et de relancer ton script pour voir si ça vient de là.

    Karl3i.

  3. #3
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    Par défaut
    bonjour,

    il s'agissait d'un hack utilisable uniquement sous xp
    voir ici: http://blogs.msdn.com/gstemp/archive.../17/74868.aspx

    une solution (parmi bien d'autres) ici: http://www.jsware.net/jsware/scripts.php3#brows

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Bonjour Karl et merci.

    J'ai donc désactiver l'UAC en suivant les instructions fournies par Microsoft et perdu, ça ne change rien...

    *******************************************************
    Bonjour Omen et merci également !

    J'ai donc installé la dll sur mon xp dans un premier temps pour "bien maîtriser l'installation", tout fonctionne. Sur vista, j'ai un souci à l'inscription de la dll dans la base de registre... apparemment, vista ne souhaite pas que je l'inscrive...
    Erreur 0x80004005 (module chargé, mais l'appel à la dll dllRegisterServer à échoué)
    *****************************************************
    Enfin, c'est complètement fou, j'arrive en vbscript à ouvrir un répertoire (et ses fichiers du coup) mais pas un seul fichier !!!! C'est vraiment frustrant !

    cf code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    	Dim a,f,i,w
    	Set a=CreateObject("Shell.Application")
    	Set w=CreateObject("WScript.Shell")
     
    	Set f=a.BrowseForFolder(&H0&,Msg,&h1&)
    	B=f.ParentFolder.ParseName(f.Title).Path
     
    	Set oFSO = CreateObject("Scripting.FileSystemObject")
    	oFSO.CopyFolder B,"c:\test\",True 
    	If Err.Number<>0 Then
    		B=Null
    		If f.Title="Desktop" Then B=w.SpecialFolders("Desktop")
    		i=InStr(f.Title, ":")
    		If i>0 Then B=Mid(f.Title,i-1,2) & "\"
    	End If
    	Set oFSO = nothing
    	Set f = nothing
    	Set w = nothing
    	Set a = nothing

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Bon, j'ai un peu avancé...

    J'ai désactivé la sécurité momentanément et j'ai pu inscrire ma dll, mais quand j'exécute mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	Set objDialog = CreateObject("Jsdlgbox.browser")
    	Set oFSO = CreateObject("Scripting.FileSystemObject")
    	'objDialog.InitialDir = "C:\"
    	intResult = objDialog.openbox
    	If intResult = "" Then
    	   	 MsgBox("Aucun fichier sélectionné !")
    	else
    		MsgBox(intResult)
    	End If
    	Set oFSO = nothing
    	Set objDialog = nothing
    J'ai un autre message :

    Windows Vista is not supported (erreur n°800A0258)
    Pas facile......

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Bon, à priori cette commande ne marche que sous XP :
    http://www.microsoft.com/technet/scr...5/hey0128.mspx

    Mais que vais-je bien pouvoir utiliser sous Vista..... j'suis foutue...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Pour info, j'ai trouvé un autre script pour ouvrir un fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    *************************
    Set objDialog = CreateObject("SAFRCFileDlg.FileOpen")
    Ret = objDialog.OpenFileOpenDlg
    WScript.Echo Ret, objDialog.FileName
     
    *************************
    ça marche bien sous XP, mais toujours pas sous Vista... c'est pas juste !

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Bon, c'est résolu... les puristes vont prendre peur....

    J'ai bien utiliser ce script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ************************************
    Set objDialog = CreateObject("SAFRCFileDlg.FileOpen")
    Ret = objDialog.OpenFileOpenDlg
    WScript.Echo Ret, objDialog.FileName
    ************************************
    Comme il se base sur une dll d'xp (safrcdlg.dll), voici ce que j'ai fait :
    1- Désactivation de l'UAC
    2- Inscription de ma dll avec regsvr32 sous c:\program files\system32
    3- Réactivation de l'UAC
    4- Test et au miracle j'ai enfin ma boîte de dialogue ! Cool !

    Merci à tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quote et double quote
    Par aktos dans le forum Langage
    Réponses: 8
    Dernier message: 05/01/2007, 19h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo