Bonjour,
J'ai un réseau de PC qui n'est pas forcément configuré à l'identique et sur ces PC il y a différents répertoires dans %path%
Ce que j'aimerais pouvoir faire c'est retourner le chemin complet d'un outil dont le répertoire est forcement dans %path%
En gros, et pour faire simple si j'appelle ma fonction comme ceci :
ResultatChemin$=Chemin("notepad.exe")
ResultatChemin$ retournerait C:\Windows\System32\notepad.exe qui serait trouvé en parcourant tous les répertoires dans %path%
Je n'arrive pas à avoir ce résultat.
Quelqu'un pourrait me donner un petit coup de main ?
D'avance, merci ^^
Programme dans %path%
Re: Programme dans %path%
Regarde du coté de la doc dans ExamineEnvironmentVariables(), Get/SetEnvironmentVariable() etc.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Programme dans %path%
C'est ce que j'ai fais ! J'ai finalement résolu mon problème ^^
Je passe le code que j'ai écris, des fois que ça intéresserait.
Je l'ai écris à l'arrache pour avoir un truc qui tourne et qui correspond à ce que je voulais. J'ai pas du tout chercher à optimiser, libre à vous de le faire, il en a besoin ^^
Si y en a qui l'optimise, pensez à repartager la chose ici
A appeler comme ceci :
Je passe le code que j'ai écris, des fois que ça intéresserait.
Je l'ai écris à l'arrache pour avoir un truc qui tourne et qui correspond à ce que je voulais. J'ai pas du tout chercher à optimiser, libre à vous de le faire, il en a besoin ^^
Si y en a qui l'optimise, pensez à repartager la chose ici
Code : Tout sélectionner
Procedure.s AddDirSep(Dossier.s)
If Right(Dossier, 1) = "\"
ProcedureReturn Dossier
Else
ProcedureReturn Dossier + "\"
EndIf
EndProcedure
Procedure.s Chemin(Executable.s)
Protected tmp_s.s
If ExamineEnvironmentVariables()
While NextEnvironmentVariable()
Select LCase(EnvironmentVariableName())
Case "windir"
If FileSize(AddDirSep(EnvironmentVariableValue()) + Executable) <> -1
ProcedureReturn AddDirSep(EnvironmentVariableValue()) + Executable
Goto fin
EndIf
If FileSize(AddDirSep(EnvironmentVariableValue()) + "System32\" + Executable) <> -1
ProcedureReturn AddDirSep(EnvironmentVariableValue()) + "System32\" + Executable
Goto fin
EndIf
Case "path"
For i = 1 To 100
If FileSize(AddDirSep(StringField(EnvironmentVariableValue(), i, ";")) + Executable) <> -1
ProcedureReturn AddDirSep(StringField(EnvironmentVariableValue(), i, ";")) + Executable
Goto fin
EndIf
Next i
EndSelect
Wend
EndIf
Fin:
EndProcedure
Code : Tout sélectionner
StrRep$ = Chemin("notepad.exe")
MessageRequester("test", StrRep$)
.:NY152:.
- Pierre Bellisle
- Messages : 25
- Inscription : jeu. 21/juin/2018 6:01
Re: Programme dans %path%
Une autre façon de faire...
L'API SearchPath recherche dans le répertoire de travail courant et dans les dossiers de l'evironnement "Path"
Voir https://msdn.microsoft.com/en-us/librar ... s.85).aspx
L'API SearchPath recherche dans le répertoire de travail courant et dans les dossiers de l'evironnement "Path"
Voir https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Code : Tout sélectionner
Import "Kernel32.lib"
SearchPathW(*zPath, *zFileName, *zExt, BufLen, *Buf, *FilePart) 'SearchPathA est aussi disponible pour du texte Ansi
EndImport
Define.String szFileName.s{#MAX_PATH}
Define.String szExt.s{4}
Define.String szPath.s{#MAX_PATH}
Define.String *pszFilePart
szFileName = "Notepad"
szExt = ".exe"
SearchPathW(0, @szFileName.s, @szExt.s, #MAX_PATH, @szPath.s, @*pszFilePart)
MessageRequester("SearchPath", szFileName + #CRLF$ + szExt + #CRLF$ + PeekS(*pszFilePart) + #CRLF$ + szPath)
;Donne: "Notepad", ".exe", "Notepad.exe", "C:\Windows\system32\Notepad.exe"