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

VBA Access Discussion :

Quelle paramètre à passer pour un shellExecute ?


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 599
    Par défaut Quelle paramètre à passer pour un shellExecute ?
    Bonjour,

    Dans mon appli Access, j'ai un formulaire permettant de visualiser une image. J'ai aussi une commande permettant de la modifier.
    Cependant, l'accès à la modification n'est pas intuitif.

    Je m'explique :
    Le bouton que j'utilise déclenche un événement "sur clic" qui est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Call RunShellExecute("Open", strFiles, 0&, 0&, SW_SHOWNORMAL)
    RunShellExecute étant une procédure qui utilise en faite l'API ShellExecute déclarée de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Le problème est donc le suivant :
    Ma commande utilise le paramètre "Open", qui est le paramètre par défaut que l'on peut trouver dans l'explorateur windows. En l'occurence, chez moi, si mon fichier possède l'extention .jpg (pour un fichier image), il ouvre la visionneuse de photo windows.
    Pour modifier la photo, il faut ensuite que j'aille dans le menu de la visionneuse et cliquer sur ""Ouvrir - Microsoft Office Picture Manager". Une opération supplémentaire inutile donc, dont je souhaiterais m'affranchir"

    Ce que je souhaiterais faire, c'est ouvrir directement Microsoft Office Picture Manager en effectuant l'équivalent de la commande "Ouvrir avec - Microsoft Office Picture Manager".

    Lorsque j'étais sous Windows XP, il y avait une option dans l'explorateur permetant de parcourir les propriétés associés aux extentions de fichiers, avec les commandes associés. Cette option a malheureusement disparue dans Windows 7; et le menu dans le panneau de configuration "programme par défaut -définir les association", est loin d'offrir les mêmes fonctionnalités.

    Comme je ne suis pas un pro de la base de registre, je souhaiterais savoir si l'un d'entre vous connaitrait la commande à associer.

    En vous remerciant par avance pour vos réponses éclairées

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    ShellExecute exploite l'association "type de fichier" <--> "application" en fonction d'un verbe (open, edit, print, ...)

    S'il n'existe aucun verbe associant Microsoft Office Picture Manager à un fichier image, on ne pas utiliser ShellExecute.

    Je me dirigerai vers le lancement de l'application Microsoft Office Picture Manager par ligne de commande.
    Exemple, partant du principe que l'exécutable est dans le même dossier qu'Access :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub TestOfficePicMngr()
    Dim sCmd As String, sPicFile As String
    ' Le fichier image à ouvrir
    sPicFile = "E:\Mes Documents\Mes images\GOLD.JPG"
    ' Construction de la ligne de commande
    sCmd = """" & Application.SysCmd(acSysCmdAccessDir) & "OIS.EXE" & """ " & _
           """" & "E:\Mes Documents\Mes images\GOLD.JPG" & """"
    ' Exécution de la ligne de commande
    Shell sCmd
    End Sub
    A+

  3. #3
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,
    tu peux également lancer l'application Microsoft Office Picture Manager ou toute autre de ton choix via ShelleExecute.

    Le seul prérequis est de connaître le FullName de l'exécutable à lancer.

    Un exemple avec Irfanview ici

    Si tu fonctionnes avec une application tierce, tu peux tester son existence (car chemin d'install standard), l'installer si pas présente et l'appeler facilement vu que tu connais sa localisation.

  4. #4
    Membre Expert Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Par défaut
    Bonjour.
    Pour répondre à ta demande concernant la façon, sous W7, d'associer un programme à un fichier, il suffit d'utiliser le clic droit sur un fichier du type dont tu veux modifier l'association, et dans le menu contextuel, tu cliques sur la dernière proposition : Choisir le programme par défaut. Là, tu désignes le programme à utiliser en vérifiant que la case "toujours utiliser le programme sélectionné ....etc" est bien cochée.
    Cordialement.

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Par défaut
    salut dumas.blr, LedZeppII , Godzestla et RobiPMS

    pour en rajouter une couche :
    il est normalement toujours possible d'ajouter par une interface graphique les verbes mais je t'avoue qu'à chaque version l'appli change souvent d'emplacement...
    donc via la base de registre:
    (vu qu'un .reg demande un hex(2) pour le chemin) je propose une exécution en ligne de commande (cmd.exe en tant qu'administrateur):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    REG ADD HKEY_CLASSES_ROOT\jpegfile\shell\edit2\command  /T REG_SZ /D "C:\Program Files\GIMP-2.0\bin\gimp-2.6.exe %1"
    j'ai pas le chemin pour MS Picture Manager mais tu le mettra à la place de celui de GIMP ci dessus en conservant %1.
    tu auras ainsi un second verbe "edit2" pour les fichiers .jpg (en supposant qu'il soit bien aussi associé à jpegfile ) que tu pourras alors utiliser avec le RunShellExecute.


  6. #6
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut Vodiem,
    comme d'hab je suppose que ce que tu suggères est du béton.

    Mais , ma foi, je n'ai ... rien compris à ta solution.
    Je la relirai après une nuit de sommeil.

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

Discussions similaires

  1. Paramétre à passer pour une méthode
    Par Lordy92 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 21/03/2011, 15h06
  2. Réponses: 8
    Dernier message: 01/11/2010, 14h01
  3. Quelle Certification passer pour Silverlight
    Par talu3000 dans le forum Silverlight
    Réponses: 14
    Dernier message: 23/08/2010, 08h36
  4. Réponses: 6
    Dernier message: 07/07/2007, 16h51
  5. Quelle licence choisir pour cette application ?
    Par krusaf dans le forum Licences
    Réponses: 6
    Dernier message: 08/07/2004, 20h20

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