+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Inactif
    Inscrit en
    février 2003
    Messages
    4 342
    Détails du profil
    Informations forums :
    Inscription : février 2003
    Messages : 4 342
    Points : 4 435
    Points
    4 435

    Par défaut Lettre de chemin vers UNC

    Je poste ici, le source résultant d'une discussion sur le forum. Des fois que ça serve.

    Le but est de transformer un chemin du style "X:\chemin\" avec X correspondant à une redirection de connexion réseau, par \\serveur\dossierpartage\chemin\.

    La fonction utilise une dll windows mpr.dll et la fonction WNetGetConnexionA

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Procédure FLecteur( cp_Chemin)
    local
    	cl_Retour	est une chaine
    	zl_Lecteur	est une chaine asciiz sur 3
    	zl_Chemin	est une chaine Asciiz sur 255 = complete( " ", 255)
    	nl_Taille	est un entier = taille( zl_Chemin)
    	
    si cp_Chemin[[ à 2]] <> "\\" alors
    	zl_Lecteur = cp_Chemin[[ à 2]]
    	si AppelDLL32("mpr.dll","WNetGetConnectionA" , &zl_Lecteur,  &Zl_Chemin, &nl_Taille) <> 0 alors
                si sansespace( zl_Chemin) <> "" alors
    		cl_Retour = zl_Chemin+cp_Chemin[[ 3 a]]
                sinon
                    cl_Retour = cp_Chemin
                fin
    	sinon
    		cl_Retour = cp_Chemin
    	FIn
    sinon
    	cl_Retour = cp_Chemin
    FIN
    renvoyer cl_Retour

  2. #2
    Membre habitué
    Inscrit en
    août 2005
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : août 2005
    Messages : 69
    Points : 103
    Points
    103

    Par défaut Chemin UNC d'un lecteur mappé sur un répertoire réseau ou inversement, chemin local à partir d'un chemin UNC.

    Plus simplement, pour obtenir le chemin UNC d'un lecteur mappé sur un répertoire réseau, on peut utiliser :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    PROCEDURE CheminLocal_Vers_UNC(_sCheminLocal est une chaîne)
    
    LOCAL
    	sRepLocal est une chaîne
    	sDisque est une chaîne
    
    sDisque = fExtraitChemin(_sCheminLocal,fDisque)
    sRepLocal = fExtraitChemin(_sCheminLocal,fRépertoire+fFichier)
    
    SI RéseauNomRep(sDisque) <> "" ALORS
    	sDisque = RéseauNomRep(sDisque)
    FIN
    
    RENVOYER sDisque+sRepLocal
    Et pour l'opération inverse, obtenir le chemin local à partir d'un chemin UNC :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    PROCEDURE UNC_Vers_CheminLocal(_sCheminUNC est une chaîne)
    
    LOCAL
    	sLecteurUNC est une chaîne
    	sRepUNC est une chaîne
    	sDisque est une chaîne
    	
    sLecteurUNC = fExtraitChemin(_sCheminUNC,fDisque)
    sRepUNC = fExtraitChemin(_sCheminUNC,fRépertoire+fFichier)
    
    POUR iLecteur = Asc("A") _A_ Asc("Z")	
    	sDisque = Caract(iLecteur)
    	SI fDisquePrêt(sDisque) ALORS
    		SI Minuscule(RéseauNomRep(sDisque+":")) = Minuscule(sLecteurUNC) ALORS
    			RENVOYER sDisque+":"+sRepUNC	
    		FIN
    	FIN
    FIN
    
    RENVOYER ""
    Bonne prog !

  3. #3
    Inactif
    Inscrit en
    février 2003
    Messages
    4 342
    Détails du profil
    Informations forums :
    Inscription : février 2003
    Messages : 4 342
    Points : 4 435
    Points
    4 435

    Par défaut

    Ça arrive trop tard, mais merci quand même !

  4. #4
    Modérateur
    Avatar de mail.spam
    Homme Profil pro Sylvain
    Développeur Windev et technicien maintenance
    Inscrit en
    janvier 2008
    Messages
    1 805
    Détails du profil
    Informations personnelles :
    Nom : Homme Sylvain
    Âge : 36
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2008
    Messages : 1 805
    Points : 3 639
    Points
    3 639

    Par défaut

    Il faut rappeler que la fonction RéseauNomRep est présente à partir de Windev 9.
    Le code de Louis fonctionne pour la version 5.5.
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  5. #5
    Inactif
    Inscrit en
    février 2003
    Messages
    4 342
    Détails du profil
    Informations forums :
    Inscription : février 2003
    Messages : 4 342
    Points : 4 435
    Points
    4 435

    Par défaut

    Désolé de te contredire mail.spam mais la fonction ReseauNomRep existe en Windev 5.5 et c'est moi qui n'ai pas suffisamment cherché !

  6. #6
    Membre habitué
    Inscrit en
    août 2005
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : août 2005
    Messages : 69
    Points : 103
    Points
    103

    Par défaut ReseauNomRep ne fonctionne pas / Lister les lecteurs réseau.

    Sur certains postes, j'ai constaté que la fonction ReseauNomRep ne fonctionne pas. (http://doc.pcsoft.fr/fr-FR/?3066005&name=ReseauNomRep)

    Je conseillerai donc au final d'utiliser la procédure décrite par Louis griffont pour récupérer le chemin UNC d'un lecteur réseau qui elle fonctionne dans tout les cas.

    Pour ma part, j'ai donc surchargé la fonction ReseauNomRep :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    PROCEDURE ReseauNomRep(_sDisque est une chaîne)
    
    LOCAL
    	sDisque		est une chaîne ASCIIZ sur 3
    	sCheminUNC	est une chaîne ASCIIZ sur 255 = Complète(" ",255)
    	iTaille	est un entier 
    	
    sDisque = _sDisque
    iTaille = Taille(sCheminUNC)
    
    AppelDLL32("mpr.dll","WNetGetConnectionA",&sDisque,&sCheminUNC,&iTaille)
    sCheminUNC = SansEspace(sCheminUNC)
    SI sCheminUNC = "" ALORS
    	sCheminUNC = WL.RéseauNomRep(_sDisque)
    FIN
    
    RENVOYER sCheminUNC
    Exemple de fonction permettant de lister les lecteurs réseau et de récupérer leur chemin UNC (En utilisant la procédure surchargée ci-dessus) :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    LOCAL
    	iLecteur est un entier
    	sReseauNomRep est une chaîne
    
    POUR iLecteur = Asc("A") _A_ Asc("Z")
    	sReseauNomRep = ReseauNomRep(Caract(iLecteur)+":")
    	SI sReseauNomRep <> ""
    		Trace("Répertoire réseau détecté : "+sReseauNomRep)
    	FIN
    FIN
    Bonne prog

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •