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

Signaler
Messages postés
11
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 mars 2010
-
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
-
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

Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
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+
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
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
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
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
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
...

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+
Messages postés
214
Date d'inscription
vendredi 13 janvier 2006
Statut
Membre
Dernière intervention
20 août 2008

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 ^^
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
...

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+
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
Salut PCPT
Messages postés
11
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 mars 2010

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...
Messages postés
11
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 mars 2010

ok comme ça tout est clair et complet!
merci encore
Messages postés
214
Date d'inscription
vendredi 13 janvier 2006
Statut
Membre
Dernière intervention
20 août 2008

'declaration du chemin du windows
dim environ
environ = Environ("windir")
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
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