|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
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 :
Call RunShellExecute("Open", strFiles, 0&, 0&, SW_SHOWNORMAL) Code :
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 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
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!si tout est OK, n'oubliez pas de cliquer sur
|
|
|
00
|
|
|
#2 | ||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
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 :
|
||
|
|
10
|
|
|
#3 |
|
Expert Confirmé
![]() Chercheur de bonheur Inscription : août 2007 Messages : 2 257 ![]() |
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.
__________________
(\ _ /) Cordialement G@dz (='.'=) (")-(") Vous avez des neurones. Sollicitez-les. ![]() . Si vous êtes aidé, pensez à Voter.
|
|
|
10
|
|
|
#4 |
|
Membre éprouvé
![]() Robert LINCEConseiller psycho-pédagogique Inscription : octobre 2007 Messages : 281 ![]() |
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. |
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
salut dumas.blr, LedZeppII
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 :
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" tu auras ainsi un second verbe "edit2" pour les fichiers .jpg (en supposant qu'il soit bien aussi associé à jpegfile |
|
|
10
|
|
|
#6 |
|
Expert Confirmé
![]() Chercheur de bonheur Inscription : août 2007 Messages : 2 257 ![]() |
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.
__________________
(\ _ /) Cordialement G@dz (='.'=) (")-(") Vous avez des neurones. Sollicitez-les. ![]() . Si vous êtes aidé, pensez à Voter.
|
|
|
00
|
|
|
#7 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Salut à tous et merci pour vos réponses éclairées.
La solution de LedZepII me parait la plus simple à mettre en oeuvre, et la plus sensée (pourquoi faire simple quand on peu faire compliqué Je retiens la suggestion de Vodiem, mais elle implique que lorsqu'on fait un déploiement multi-poste, il faut exécuter la commande de MAJ de la base de registre sur chacun des postes déployés ... Ma question se portera alors sur ceci : est-ce uniquement dans HKEY_CLASSES_ROOT que l'on trouvera les extensions du menu contextuelde l'explorateur ? En tout cas, je m'en vai de ce pas vérifier la base de registre à cette entrée Encore merci pour votre aide
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!si tout est OK, n'oubliez pas de cliquer sur
|
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
merci Godzestla pour vous éclairez sur le fonctionnement et pour faire simple: HKEY_CLASSES_ROOT contient les extensions de fichier dont .jpg dans ces clefs qui lie les extensions à leurs applications il semblerait logique de définir là les associations mais parce qu'un format recouvre plusieurs extensions: .jpg .jpeg .jpe ... on trouve dans la valeur "par défaut" la référence à la clef qui les définissent tous soit dans ce cas : jpegfile. donc en allant à jpegfile ont y trouvera là la clef "shell" qui correspond en gros aux verbes (une partie du menu clic droit sur un fichier) il suffit de créer à l'intérieur une clef pour un verbe (n'importe quel nom) et d'y mettre dans "par défaut" le texte que l'on veut faire apparaitre dans le menu contextuel. pour lui associer une application il faut créer à l'intérieur de la clef verbe une clef nommé expressément: "command" qui contient la ligne de commande à exécuter: soit le chemin de l'application. en ligne de commande on transmets les paramètres par des variables d'environnements spécifié par %1, %2... %1 dans ce cas représente le nom du fichier donc sans lui l'application s'ouvre mais sans le fichier (c'est une convention que l'application récupère le nom du fichier dans la ligne de commande mais toutefois pas une obligation) donc dumas.blr oui c'est bien là qu'on trouve le mécanisme pour tous les systèmes windows qui utilisent la base de registre. tu as effectivement la possibilité d'exécuter avec Shell (solus LedZeppII ca a des avantages et inconvénient: avec un shell tu obliges d'avoir l'appli et de spécifier son emplacement dans ton appli (au déploiement tu auras aussi ce soucis). mais tu peux verrouiller sur une appli. avec un shellExecute tu laisse libre arbitre à l'utilisateur de choisir ce qui lui convient via le système d'exploitation. bien entendu ton appli doit être en corrélation avec les verbes existants. (même prb au déploiement mais au niveau base de registre) dans ce cas il est plus facilement envisageable de mettre en place un éditeur différent pour chaque utilisateur. ... enfin shell ou shellexecute... ca reste du kifkif bourricot pour tes utilisateurs... prend ce qui te parait le plus simple au pire tu sauras comment le changer. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com