Récupérer le chemin du dossier d'installation de windows

Résolu
FlorimondH Messages postés 11 Date d'inscription lundi 24 septembre 2007 Statut Membre Dernière intervention 13 mars 2010 - 27 juin 2008 à 19:18
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 27 juin 2008 à 22:59
Bonjour à tous,
<!--[if gte vml 1]><v:shapetype
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" alt="" style='width:24pt;
height:24pt'/><![endif]--><!--[if !vml]--><!--[endif]-->
La finalité de ma petite application est de créer un fichier XML. Quand
celui-ci est fin prêt, on peut cliquer sur un petit bouton "atteindre le
fichier". Il démarre l'explorateur windows avec la commande Shell et en
ligne de commande le chemin du fichier qui vient d'être crée. Le petit détail
ennuyeux c'est qu'il faut connaître le chemin de cette application. Si
"explorer.exe" se trouve toujours à la base du dossier d'installation
de Windows (me semble-t-il), le nom de ce dossier varie d'une version de
windows à l'autre mais aussi selon la fantaisie de celui qui a installé le PC.
Aussi, j'aimerais savoir comment récupérer le chemin du dossier d'installation
de windows. J'ai déjà cherché dans l'API, j'ai aussi examiné ma documentation
sur l'objet "SysInfo", et google ne semble pas être mon ami . Peut-être ais-je simplement mal cherché...


Quelqu'un a-t-il une solution?

Merci d'avance

11 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
27 juin 2008 à 19:37
Salut,

il existe une variable d'environement appelé SystemRoot. Je ne sais pas si sont nom est different d'une version de windows a une autre mais je ne pense pas.

En VB6 je crois que cela ce passe de la meme façon qu'en VBA donc pour recupperer le contenu de cette variable

Dim WinRep As String
WinRep = Eviron("SystemRoot")

A+
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 juin 2008 à 19:42
salut,

exact bigfish
on peut aussi ajouter un $ à environ_ pour avoir une string et non un variant

NB : (certains) environ ne fonctionne(nt) que sous Win2K et +
en dessous (et au dessus) il faudra utiliser l'API GetSystemDirectory

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 juin 2008 à 19:56
salut bigfish ^^

et moi bêtement je ne lis même (presque) pas la question ^^

d'une part oui, SHELL peut lancer "juste" EXPLORER.EXE" sans connaître son chemin
d'autre part ce n'est pas la meilleure méthode
le client peut avoir une autre application pour les XML
explorer va lui lancer iexplorer

il faut donc passer par l'API ShellExecute
avec ce petit snippet :
http://www.codyx.org/snippet_ouvrir-document-lancer-executable_25.aspx#1548

voilou

ps bigfish : je n'ai pas de "temp" dans mon "c:"

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
27 juin 2008 à 20:40
...

il est vrai qu'une seul virgule aurai suffit mais j'ai la mauvaise abitude de les laisser. Pour le reste vois l'explication trouvé ici

A+
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
achills Messages postés 213 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 20 août 2008
27 juin 2008 à 21:51
our lancer explorer.exe
'declaration
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

Private Sub Command1_Click()
ShellExecute Me.hwnd, "open", "explorer.exe", "", App.Path, 1
End Sub

cordialement ^^
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
27 juin 2008 à 19:42
...

j'ai pas percuté mais il me semble que tu n'as pas besoin de connaitre le chemin de l'explorer pour le lancer

En VBA on fait comme suit :

Dim DefaultFolderPath As String
DefaultFolderPath = "c:\temp"
Shell "explorer /e,," & DefaultFolderPath, vbNormalFocus

A+
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
27 juin 2008 à 19:45
Salut PCPT
0
FlorimondH Messages postés 11 Date d'inscription lundi 24 septembre 2007 Statut Membre Dernière intervention 13 mars 2010
27 juin 2008 à 20:19
ok, merci à vous deux effectivement, je pensais avoir testé sans préciser le chemin et que ça ne fonctionnait pas, mais j'ai cherché midi à 14h! je ne connaissait pas ShellExecute et ça va m'être bien utile aussi^^
bigfish, c'est un détail, mais est ce que tu pourrais juste me préciser à quoi correspondent les deux virgules après le slash e -> Shell "explorer /e,,"
...il n'y a pas d'ordre pour les arguments à ma connaissance...
0
FlorimondH Messages postés 11 Date d'inscription lundi 24 septembre 2007 Statut Membre Dernière intervention 13 mars 2010
27 juin 2008 à 21:25
ok comme ça tout est clair et complet!
merci encore
0
achills Messages postés 213 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 20 août 2008
27 juin 2008 à 21:38
'declaration du chemin du windows
dim environ
environ = Environ("windir")
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
27 juin 2008 à 22:59
Bonsoir,

Bon...
Moi, pour ouvrir l'explorateur sur un répertoire de mon choix, j'ai la mauvaise (?) habitude de faire ceci :
(ici pour ouivrir l'explorateur sur d:\monoutil

Private Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long



Private Sub Command1_Click()
  WinExec "Explorer.exe d:\monoutil", 10
End Sub
0
Rejoignez-nous