IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] comment voir les machines d'un réseau local [FAQ]


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 25
    Points : 25
    Points
    25
    Par défaut [VB6] comment voir les machines d'un réseau local
    Bonjour,

    j'aimerai savoir comment faire pour pouvoir explorer sur toutes les machines de mon reseau local.
    l'objectif etant de pouvoir selectionné un répertoire pour en faire une copie vers une autre machine.

    merci d'avance
    À vaincre sans péril, on triomphe sans gloire
    (Corneille)

  2. #2
    Membre actif Avatar de AdHoc
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 245
    Points : 239
    Points
    239
    Par défaut
    Bonjour,
    je ne connais pas d'autre solution que d'utiliser les commandes DOS (redirigé dans un fichier ou dans une variable voir AbelMan
    http://www.developpez.net/forums/vie...&highlight=dos)
    1) voir tous les domaine ou groupe de travail, récupérer et classer les domaine dans un tableau
    2) voir tous les PC de chaque de domaine
    avec 3) pour chaque PC pour les ressources partagées
    4) Avec les FilesystemObject (scrrun.dll ou Microsoft scripting runtime), explorer tous les répertoires

  3. #3
    Expert confirmé
    Avatar de grafikm_fr
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 470
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 470
    Points : 5 059
    Points
    5 059
    Par défaut
    Citation Envoyé par AdHoc
    Bonjour,
    je ne vois pas d'autre solution que d'utiliser les commandes DOS
    Moi je vois une solution qui consiste à utiliser les API
    Le code ira dans la FAQ un de ces jours...

    Comment obtenir les noms de toutes les machines sur un domaine Windows?

    Le code suivant est à mettre dans un module:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
     
    Option Explicit 
     
    'Definition des constantes 
    Private Const MAX_PREFERRED_LENGTH As Long = -1 
    Private Const NERR_SUCCESS As Long = 0& 
    Private Const ERROR_MORE_DATA As Long = 234& 
    Private Const SV_TYPE_ALL                 As Long = &HFFFFFFFF 
    Private Const SV_PLATFORM_ID_OS2       As Long = 400 
    Private Const SV_PLATFORM_ID_NT        As Long = 500 
     
    'Masque pour obtenir la version OS Majeure a partir de la variable version globale 
    Private Const MAJOR_VERSION_MASK        As Long = &HF 
     
    Private Type SERVER_INFO_100 
      sv100_platform_id As Long 
      sv100_name As Long 
    End Type 
     
    Private Declare Function NetServerEnum Lib "netapi32" _ 
      (ByVal servername As Long, _ 
       ByVal level As Long, _ 
       buf As Any, _ 
       ByVal prefmaxlen As Long, _ 
       entriesread As Long, _ 
       totalentries As Long, _ 
       ByVal servertype As Long, _ 
       ByVal domain As Long, _ 
       resume_handle As Long) As Long 
     
    Private Declare Function NetApiBufferFree Lib "netapi32" _ 
       (ByVal Buffer As Long) As Long 
     
    Private Declare Sub CopyMemory Lib "kernel32" _ 
       Alias "RtlMoveMemory" _ 
      (pTo As Any, uFrom As Any, _ 
       ByVal lSize As Long) 
     
    Private Declare Function lstrlenW Lib "kernel32" _ 
      (ByVal lpString As Long) As Long 
     
    Public Function GetServers(sDomain As String) As String 
     
      'liste de tous les serveurs dans un domaine 
     
       Dim bufptr          As Long 
       Dim dwEntriesread   As Long 
       Dim dwTotalentries  As Long 
       Dim dwResumehandle  As Long 
       Dim se100           As SERVER_INFO_100 
       Dim success         As Long 
       Dim nStructSize     As Long 
       Dim cnt             As Long 
       Dim resultat        As String 
     
       nStructSize = LenB(se100) 
    'la liste des noms est obtenue avec la fonction NetServerEnum 
       success = NetServerEnum(0&, _ 
                               100, _ 
                               bufptr, _ 
                               MAX_PREFERRED_LENGTH, _ 
                               dwEntriesread, _ 
                               dwTotalentries, _ 
                               SV_TYPE_ALL, _ 
                               0&, _ 
                               dwResumehandle) 
     
     
       If success = NERR_SUCCESS And _ 
          success <> ERROR_MORE_DATA Then 'si tout se passe bien 
     
           For cnt = 0 To dwEntriesread - 1 
     
            CopyMemory se100, ByVal bufptr + (nStructSize * cnt), nStructSize 
            'on scanne le buffer en memoire et pour chaque entrée, conversion en String 
             resultat = resultat & GetPointerToByteStringW(se100.sv100_name) & "|" 
     
          Next 
     
       End If 
     
      'nettoyage du buffer que le système a reservé pour la liste des noms 
       Call NetApiBufferFree(bufptr) 
     
      'on retourne le string contenants les noms separés par des "|" 
       GetServers = resultat 
     
    End Function 
     
     
    Public Function GetPointerToByteStringW(ByVal dwData As Long) As String 
     
    'fonction auxilliare qui recoit un pointeur vers une chaine dans un buffer interne 
    'Windows et la convertit en String exploitable en VB 
     
       Dim tmp() As Byte 
       Dim tmplen As Long 
     
       If dwData <> 0 Then 
     
          tmplen = lstrlenW(dwData) * 2 
     
          If tmplen <> 0 Then 
     
             ReDim tmp(0 To (tmplen - 1)) As Byte 
             CopyMemory tmp(0), ByVal dwData, tmplen 
             GetPointerToByteStringW = tmp 
     
         End If 
     
       End If 
     
    End Function






    Ensuite, on appelle la fonction par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim maliste as String 
    maliste=GetServers(vbNullString)
    qui retourne la liste des noms separés par des "|"
    (on peut faire un split ensuite)

    Ensuite, une fois qu'on a le nom de la machine, on peut effectivement utiliser FSO pour explorer...
    "L'éducation, c'est le début de la richesse, et la richesse n'est pas destinée à tout le monde" (Adolphe Thiers)

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 25
    Points : 25
    Points
    25
    Par défaut
    merci beaucoup !!!
    maintenant y a plus qu'a mettre en pratique l'api !

    le sujet ressort un peu de la lumiere et moi de mon impasse !!
    encor merci
    À vaincre sans péril, on triomphe sans gloire
    (Corneille)

  5. #5
    Membre actif Avatar de AdHoc
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 245
    Points : 239
    Points
    239
    Par défaut
    merci grafikm_fr pour cette solution nettement plus propre que la mienne (j'avais attendu quelque jour avant de la poster).
    J'en ai profité pour corriger ma réponse et surtout mes programmes .

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 64
    Points : 54
    Points
    54
    Par défaut
    Et si on est sous windows 98, on fait comment ?

    La fonction NetServerEnum() n'étant disponible que sur Windows NT ou supérieur, ce code ne fonctionne pas sur Windows 9x.

    merci
    Vivement aout ...

  7. #7
    Inactif
    Inscrit en
    Juillet 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Question?????
    Bonjour
    pour le code q'on devai coller dans le module et appeler la procédure dans le form

    pour l'evenement est ce que ça sera le form load ou quoi ???
    mais qu'est ce qu'on doit inserer comme contrôl : un boutton ou ???
    Merci d'avance...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 64
    Points : 54
    Points
    54
    Par défaut Re: Question?????
    Citation Envoyé par fares3650
    Bonjour
    pour le code q'on devai coller dans le module et appeler la procédure dans le form

    pour l'evenement est ce que ça sera le form load ou quoi ???
    mais qu'est ce qu'on doit inserer comme contrôl : un boutton ou ???
    Merci d'avance...
    bah tu fais comme tu le sents !

    Tu declares un string ... et t'y mets ce que te retourne la fonction GetServers(vbNullString)
    Vivement aout ...

  9. #9
    Inactif
    Inscrit en
    Juillet 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Mais
    j'ai mis ce code mais qu'on je clique ça ne donne rien même pas une erreur...\\
    ----------------------------
    Dim maliste As String
    Private Sub Command1_Click()
    maliste = GetServers(vbNullString)
    End Sub//------------------------------------------------------

    sinom pour le string comment je le fait ???(arhie null en vb)
    Merci d'avance...........

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 64
    Points : 54
    Points
    54
    Par défaut Re: Mais
    Citation Envoyé par fares3650
    j'ai mis ce code mais qu'on je clique ça ne donne rien même pas une erreur...
    Normal ... y'a pas d'erreur

    C'est juste que tu n'affiches pas ta string ... donc pas d'appercu ...

    mets MsgBox maliste à la suite, tu verras le resultats !
    Vivement aout ...

  11. #11
    Inactif
    Inscrit en
    Juillet 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 3
    Points : 3
    Points
    3
    Par défaut OUI
    T'as pas une idée sur Comment modifié et inserer et modifié un data grid en vb …
    Merci d'avance

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 64
    Points : 54
    Points
    54
    Par défaut Re: OUI
    Citation Envoyé par fares3650
    T'as pas une idée sur Comment modifié et inserer et modifié un data grid en vb …
    Merci d'avance
    c'est pas le bon sujet ...


    Sinon, quelqu'un sait lister les postes d'un reseau sous 98 ?!
    Vivement aout ...

  13. #13
    Expert confirmé
    Avatar de grafikm_fr
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 470
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 470
    Points : 5 059
    Points
    5 059
    Par défaut Re: OUI
    Citation Envoyé par oazar
    Sinon, quelqu'un sait lister les postes d'un reseau sous 98 ?!
    Par la bonne vieille méthode bourrin: tu executes "net view", tu rediriges la sortie dans un fichier texte, tu l'ouvres et tu recuperes la liste des machines...
    "L'éducation, c'est le début de la richesse, et la richesse n'est pas destinée à tout le monde" (Adolphe Thiers)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] Comment lister les controles d'un frame ?
    Par enibris dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 15/04/2006, 09h58
  2. |VB6] Comment Lister les liens vers des fichiers d'une page web
    Par Mayti4 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 18/01/2005, 18h17
  3. [//TODO] Comment voir les balises TODO dans les problemes?
    Par romain3395 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 06/12/2004, 08h53
  4. Comment voir les champs créés dans les tables?
    Par Missvan dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/02/2004, 10h27
  5. [VB6] Comment lister les serveurs SQL d'un domaine ?
    Par WOLO Laurent dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/01/2004, 08h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo