PureBasic

Forums PureBasic
Nous sommes le Mar 25/Sep/2018 18:03

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 
Auteur Message
 Sujet du message: Programme dans %path%
MessagePosté: Ven 07/Avr/2017 10:50 
Hors ligne

Inscription: Dim 14/Mai/2006 20:41
Messages: 135
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 ^^

_________________
.:NY152:.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Programme dans %path%
MessagePosté: Ven 07/Avr/2017 11:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8485
Regarde du coté de la doc dans ExamineEnvironmentVariables(), Get/SetEnvironmentVariable() etc.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique Aude (11) Isère (38)
RESIZER GOLD : Mon logiciel de redimensionnement par lot


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Programme dans %path%
MessagePosté: Ven 07/Avr/2017 13:34 
Hors ligne

Inscription: Dim 14/Mai/2006 20:41
Messages: 135
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 :)

Code:
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

A appeler comme ceci :
Code:
StrRep$ = Chemin("notepad.exe")
MessageRequester("test", StrRep$)

_________________
.:NY152:.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Programme dans %path%
MessagePosté: Sam 23/Juin/2018 7:50 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 21/Juin/2018 6:01
Messages: 14
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/library/windows/desktop/aa365527(v=vs.85).aspx

Code:
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"


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye