Afficher la fenetre "Ouvrir avec" [Résolu]

Messages postés
9
Date d'inscription
mercredi 9 novembre 2005
Dernière intervention
9 novembre 2010
- - Dernière réponse : CTAC
Messages postés
133
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
8 juin 2012
- 9 nov. 2010 à 19:32
Bonjour,

j'aimerais afficher la boite de dialogue "Ouvrir avec" (qui permet d'associer un type de fichier à un programme).

En fait j'essaye d'ouvrir un fichier avec la commande ShellExecute et lorsque le fichier est de type inconnu, cette fonction me renvoie 5 !
Bizaremment et d'après cette page je devrais avoir 31 (ou 14 peut-être). Bref suite à ce retour j'aimerais afficher cette boite de dialogue pour avoir le même comportement que lorsqu'on essaye d'ouvrir ce fichier inconnu depuis l'explorateur Windows.

Voici mon code :

mon_fichier = "essai.test"
mon_dossier = "c:"
retour = ShellExecute(0, "open", mon_fichier, "", mon_dossier, 3)

' Le fichier n'est associé à aucun programme
If retour = 5 Then
[OUVRIR LA BOITE DE DIALOGUE "OUVRIR AVEC"]
End If



Merci pour votre aide
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
9
Date d'inscription
mercredi 9 novembre 2005
Dernière intervention
9 novembre 2010
3
Merci
Merci à moi, j'ai trouvé !!! :)


Voici la ligne manquante :

ShellExecute 0, vbNullString, "RUNDLL32.EXE", "shell32.dll,OpenAs_RunDLL " & mon_fichier, mon_dossier, vbNormalFocus


TchuB !!

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de cs_Stefun
Messages postés
133
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
8 juin 2012
0
Merci
Bonjour,

Une autre façon de faire sans le rundll

Const SEE_MASK_INVOKEIDLIST = &HC
Const SEE_MASK_NOCLOSEPROCESS = &H40
Const SEE_MASK_FLAG_NO_UI = &H400
Private Type SHELLEXECUTEINFO
    cbSize As Long
    fMask As Long
    hwnd As Long
    lpVerb As String
    lpFile As String
    lpParameters As String
    lpDirectory As String
    nShow As Long
    hInstApp As Long
    lpIDList As Long
    lpClass As String
    hkeyClass As Long
    dwHotKey As Long
    hIcon As Long
    hProcess As Long
End Type
Private Declare Function ShellExecuteEx Lib "shell32.dll" (SEI As SHELLEXECUTEINFO) As Long
Sub OuvrirAvec(FileName$)
    Dim SEI As SHELLEXECUTEINFO
    Dim r As Long
    With SEI
        .cbSize = Len(SEI)
        .fMask = SEE_MASK_NOCLOSEPROCESS Or _
         SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI
        .hwnd = 0&
        .lpVerb = "openas"
        .lpFile = FileName
        .lpParameters = vbNullChar
        .lpDirectory = vbNullChar
        .nShow = 0
        .hInstApp = 0
        .lpIDList = 0
    End With
    r = ShellExecuteEx(SEI)
End Sub
Sub Test()
    Dim MonFichier$
    MonFichier = "C:\essai.test"
    OuvrirAvec MonFichier
End Sub


largement inspiré de http://allapi.mentalis.org/apilist/ShellExecuteEx.shtml#

ctac
Commenter la réponse de CTAC

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.