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

Delphi Discussion :

Lecture addresse Mac d'une carte non connectée


Sujet :

Delphi

  1. #1
    Membre actif

    Inscrit en
    Mai 2010
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 401
    Points : 294
    Points
    294
    Par défaut Lecture addresse Mac d'une carte non connectée
    Bonjour a tous,
    svp ,
    j’aimerais bien savoir si c'est possible de lire l' adresse Mac d'une carte non connectée.
    j'ai essayé avec le code proposé dans la FAQ , mais ce dernier ne marche que si le PC est connecté a un réseaux.
    alors dans mon cas mon pc n'est connecté a aucun réseaux.
    amicalement

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    pour Windows, j'aurais tendance à utiliser les WMI pour obtenir ce genre de chose.
    Root\CIMV2\win32_NetworkAdapter semble fournir ce qu'il faut

    Et, grâce à WMI DelphiCodeCreator il est assez facile d'obtenir un squelette de programme

    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
    //-----------------------------------------------------------------------------------------------------
    //     This code was generated by the Wmi Delphi Code Creator (WDCC) Version 1.9.9.350
    //     http://code.google.com/p/wmi-delphi-code-creator/
    //     Blog http://theroadtodelphi.wordpress.com/wmi-delphi-code-creator/
    //     Author Rodrigo Ruz V. (RRUZ) Copyright (C) 2011-2015 
    //----------------------------------------------------------------------------------------------------- 
    //
    //     LIABILITY DISCLAIMER
    //     THIS GENERATED CODE IS DISTRIBUTED "AS IS". NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED.
    //     YOU USE IT AT YOUR OWN RISK. THE AUTHOR NOT WILL BE LIABLE FOR DATA LOSS,
    //     DAMAGES AND LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING OR MISUSING THIS CODE.
    //
    //----------------------------------------------------------------------------------------------------
    program GetWMI_Info;
     
    {$APPTYPE CONSOLE}
     
    uses
      SysUtils,
      ActiveX,
      ComObj,
      Variants;
     
     
     
    // La classe Win32_NetworkAdapter représente une carte réseau sur un système Win32.
     
    procedure  GetWin32_NetworkAdapterInfo;
    const
      WbemUser            ='';
      WbemPassword        ='';
      WbemComputer        ='localhost';
      wbemFlagForwardOnly = $00000020;
    var
      FSWbemLocator : OLEVariant;
      FWMIService   : OLEVariant;
      FWbemObjectSet: OLEVariant;
      FWbemObject   : OLEVariant;
      oEnum         : IEnumvariant;
      iValue        : LongWord;
    begin;
      FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
      FWMIService   := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
      FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter','WQL',wbemFlagForwardOnly);
      oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
      while oEnum.Next(1, FWbemObject, iValue) = 0 do
      begin
        Writeln(Format('Caption       %s',[String(FWbemObject.Caption)]));// String
        Writeln(Format('MACAddress    %s',[String(FWbemObject.MACAddress)]));// String
     
        Writeln('');
        FWbemObject:=Unassigned;
      end;
    end;
     
     
    begin
     try
        CoInitialize(nil);
        try
          GetWin32_NetworkAdapterInfo;
        finally
          CoUninitialize;
        end;
     except
        on E:EOleException do
            Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode])); 
        on E:Exception do
            Writeln(E.Classname, ':', E.Message);
     end;
     Writeln('Press Enter to exit');
     Readln;      
    end.
    après, comme tout bon SQL (WQL est limité quand même) ce n'est qu'une question de clause WHERE
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre actif

    Inscrit en
    Mai 2010
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 401
    Points : 294
    Points
    294
    Par défaut
    Bonjour ,
    Merci sergio pour la réponse ;
    seulement en exécutons le morceaux du programme j'obtiens ce message d'erreur :

    Nom : PbMacAdresse.png
Affichages : 144
Taille : 11,2 Ko

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Re,

    Le programme proposé a été généré par WMI Code Creator
    ce n'est pas très difficile de palier à l'erreur

    soit par test (ligne 49) de la valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if FWbemObject.MACAddress<> null then Writeln(Format('MACAddress    %s',[String(FWbemObject.MACAddress)]));
    soit en utilisant (ligne 44) la clause WHERE de WQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter WHERE MACAddress IS NOT NULL','WQL',wbemFlagForwardOnly);
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre actif

    Inscrit en
    Mai 2010
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 401
    Points : 294
    Points
    294
    Par défaut
    Bonjour Sergio et merci pour le suivie.
    en utilisant (ligne 44) la clause WHERE de WQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter WHERE MACAddress IS NOT NULL','WQL',wbemFlagForwardOnly);
    ça marche très bien.

    Merci beaucoup Sergio .
    Amicalement.

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

Discussions similaires

  1. Comment obtenir l'adresse MAC d'une carte réseau déconnectée ?
    Par ZZZEvelyne dans le forum Web & réseau
    Réponses: 6
    Dernier message: 10/01/2014, 23h28
  2. [AC-2007] Adresse MAC d'une carte réseaux
    Par koneab73 dans le forum Sécurité
    Réponses: 2
    Dernier message: 25/02/2013, 11h43
  3. pb lecture des données d'une carte SD
    Par burby dans le forum Débuter
    Réponses: 1
    Dernier message: 14/10/2009, 19h18
  4. Comment installer les packages sous Fedora sur une machine non connecter ?
    Par gemo1485 dans le forum RedHat / CentOS / Fedora
    Réponses: 4
    Dernier message: 20/06/2009, 08h45
  5. récupérer l'addresse MAC d'une interface Wifi
    Par Mokhtar BEN MESSAOUD dans le forum Linux
    Réponses: 1
    Dernier message: 18/04/2008, 22h25

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