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 :

Récupérer des informations sur les connexions réseau


Sujet :

Delphi

  1. #1
    Membre habitué
    Avatar de Leobaillard
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    313
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 313
    Points : 171
    Points
    171
    Par défaut Récupérer des informations sur les connexions réseau
    Bonsoir ! Je voudrais savoir s'il est possible et si oui comment on fait pour récupérer les infos des connexions réseau de Windows comme par exemple les passerelles, les dns, les ip, ou pour les connexion sans fil (ça m'intéresse plus) le ssid la vitesse de connexion ou encore le niveau de réception ?

    Merci d'avance bonne année et bonne nuit à tous
    /// ( : Léo : ) \\\
    ---C'est parce que la vitesse de la lumière est supérieure à celle du son, que certains paraissent brillants avant d'avoir l'air con---
    http://leobaillard.org (Hébergement gratuit, prog, forums, et autres)

    -------------------------

    L'orbe du temps (Zelda like 2D en Delphi) : Le Site

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut Re: Récupérer des informations sur les connexions réseau
    Citation Envoyé par Leobaillard
    Bonsoir ! Je voudrais savoir s'il est possible et si oui comment on fait pour récupérer les infos des connexions réseau de Windows comme par exemple les passerelles, les dns, les ip, ou pour les connexion sans fil (ça m'intéresse plus) le ssid la vitesse de connexion ou encore le niveau de réception ?
    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
       procedure GetConsoleText(const szCommande: String; var szResult: String);
       const
          LENBUFF = 512;      //.Augmenter si problème.
       var
          hReadPipe, hWritePipe: THandle;
          sa: TSecurityAttributes;
          si: TStartupInfo;
          pi: TProcessInformation;
          lpBuffer: Array[0..LENBUFF] of char;
          nBytesRead: Cardinal;
          nBytesToRead: Integer;
       begin
          sa.nLength := Sizeof(sa);
          sa.lpSecurityDescriptor := nil;
          sa.bInheritHandle := True;
     
          if not CreatePipe(hReadPipe, hWritePipe, @sa, 0) then
          begin
             RichEdit.Lines.Add('   >> Erreur :  la création du pipe a échoué !');
             Exit;
          end;
     
          FillChar(si, Sizeof(si), 0);
          si.cb := Sizeof(si);
          si.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
          si.wShowWindow := SW_HIDE;
          si.hStdInput := 0;
          si.hStdOutput := hWritePipe;
          si.hStdError := hWritePipe;
     
          if not CreateProcess(nil, PChar(szCommande), nil, nil, True, 0, nil, nil, si, pi) then
          begin
             RichEdit.Lines.Add('   >> Erreur :  l''exécution de la commande a échoué !');
             CloseHandle(hReadPipe);
             CloseHandle(hWritePipe);
             Exit;
          end;
     
          CloseHandle(hWritePipe);
          nBytesToRead := LENBUFF;
          nBytesRead := 0;
     
          szResult := '';
          while(True) do
          begin
             lpBuffer := '';
             ReadFile(hReadPipe, lpBuffer, nBytesToRead, nBytesRead, nil);
             if nBytesRead = 0 then
                Break;
             szResult := szResult + StrPas(lpBuffer);
          end;
     
          WaitForSingleObject(pi.hProcess, INFINITE);
          CloseHandle(pi.hProcess);
          CloseHandle(hReadPipe);
       end;
     
    ...
     
    GetConsoleText('ipconfig /all', szResultat);
    J'ai déjà ça pour exécuter des commande DOS.
    Si ca peut t'aider ...

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  3. #3
    Membre habitué
    Avatar de Leobaillard
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    313
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 313
    Points : 171
    Points
    171
    Par défaut
    Ok, , il faudra aprèsq que je récupère les différentes infos, mais c'est déjà pas mal . Et Pour le WiFi, personne n'a d'idée ?
    /// ( : Léo : ) \\\
    ---C'est parce que la vitesse de la lumière est supérieure à celle du son, que certains paraissent brillants avant d'avoir l'air con---
    http://leobaillard.org (Hébergement gratuit, prog, forums, et autres)

    -------------------------

    L'orbe du temps (Zelda like 2D en Delphi) : Le Site

  4. #4
    Membre actif Avatar de [Silk]
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 198
    Points : 201
    Points
    201
    Par défaut
    Salut,
    en mettant au point une procedure similaire à la tienne lung avec envoi des information du serveur vers le client on a eu affaire à un bug bizarre.Dans le serveur j'utilise les commandHandlers pour gérer toutes les commandes reçues, et dans ce cas je reçois bien la commande pour une commande shell mais la ligne juste en dessous c'est-à-dire le readln où il y a le paramètre pour la commande à lancer ne s'exécute jamais ! Le programme ne plante pas mais si on renvoie une deuxième fois la commande le paramètre affiché est juste le nom de la commande...

    voici le code de réception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TMainForm.TCPServerDosCommandCommand(ASender: TIdCommand);
    var
    Parametres : string;
    begin
    AddItem(Processes,'Commande reçue : DosCommand','blue');
    Parametres := ASender.Thread.Connection.ReadLn();   //c'est la ligne qui bugue
    AddItem(Processes,'Paramètres de commande : '+Parametres,'blue');
    ShellExec(Parametres);
    end;
    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
     
    procedure ShellExec(strCmd:String);
    const
      ReadBuffer = 2400;
    var
      Security           : TSecurityAttributes;
      ReadPipe,WritePipe : THandle;
      start              : TStartUpInfo;
      ProcessInfo        : TProcessInformation;
      Buffer             : Pchar;
      BytesRead          : DWord;
      Apprunning         : DWord;
    begin
    try
      With Security do begin
      nlength              := SizeOf(TSecurityAttributes);
      binherithandle       := true;
      lpsecuritydescriptor := nil;
      end;
      if Createpipe (ReadPipe, WritePipe,
                    @Security, 0) then begin
      Buffer := AllocMem(ReadBuffer + 1);
      FillChar(Start,Sizeof(Start),#0);
      start.cb          := SizeOf(start);
      start.hStdOutput  := WritePipe;
      start.hStdInput   := ReadPipe;
      start.dwFlags     := STARTF_USESTDHANDLES +
                            STARTF_USESHOWWINDOW;
      start.wShowWindow := SW_HIDE;
     
      if CreateProcess(nil,
              PChar(strCmd),
              @Security,
              @Security,
              true,
              NORMAL_PRIORITY_CLASS,
              nil,
              nil,
              start,
              ProcessInfo)
      then
      begin
        repeat
        Apprunning := WaitForSingleObject
                      (ProcessInfo.hProcess,100);
        Application.ProcessMessages;
        until (Apprunning <> WAIT_TIMEOUT);
        Repeat
          BytesRead := 0;
          ReadFile(ReadPipe,Buffer[0],
                ReadBuffer,BytesRead,nil);
          Buffer[BytesRead]:= #0;
          OemToAnsi(Buffer,Buffer);
     
          MainForm.AddItem(MainForm.Processes,String(Buffer) ,'');
          AClient.WriteLn(String(Buffer));
     
        until (BytesRead < ReadBuffer);
      end;
      FreeMem(Buffer);
      CloseHandle(ProcessInfo.hProcess);
      CloseHandle(ProcessInfo.hThread);
      CloseHandle(ReadPipe);
      CloseHandle(WritePipe);
      MainForm.AddItem(MainForm.Processes,'La commande a été exécutée avec succès','green');
      AClient.Writeln('OK');
      end;
    except
    MainForm.AddItem(MainForm.Processes,'Erreur d''exécution de la commande','red');
    AClient.Writeln('ERR');
    Exit;
    end;
    end;
    Silk

  5. #5
    Membre habitué
    Avatar de Leobaillard
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    313
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 313
    Points : 171
    Points
    171
    Par défaut
    Et voici mon code d'envoi réceptioon de la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm1.XiButton7Click(Sender: TObject);
    begin
    if Client.Connected then
    begin
      Client.SendCmd('DosCommand');
      try
        Client.WriteLn(com_cons.Text);
      except
        AddItem(log, 'Erreur lors du traitement de la commande', 'red');
      end;
      AddItem(log, 'Commande DosCommand envoyée', 'blue');
      console.Lines.Add(Client.ReadLn());
    end;
    end;
    /// ( : Léo : ) \\\
    ---C'est parce que la vitesse de la lumière est supérieure à celle du son, que certains paraissent brillants avant d'avoir l'air con---
    http://leobaillard.org (Hébergement gratuit, prog, forums, et autres)

    -------------------------

    L'orbe du temps (Zelda like 2D en Delphi) : Le Site

  6. #6
    Membre habitué
    Avatar de Leobaillard
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    313
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 313
    Points : 171
    Points
    171
    Par défaut
    Ça vous arrive souvent d'avoir des bug ésotériques comme ceux là ? Des bugs qui proviennent d'on ne sais où ? Eh ben je peux vous dire que c'est très énervant... Alors si vous avez ne serait-ce que la moindre petite piste ou idée.. Ou encore quelque chose que l'on pourrait essayer...

    Merci d'avance...
    /// ( : Léo : ) \\\
    ---C'est parce que la vitesse de la lumière est supérieure à celle du son, que certains paraissent brillants avant d'avoir l'air con---
    http://leobaillard.org (Hébergement gratuit, prog, forums, et autres)

    -------------------------

    L'orbe du temps (Zelda like 2D en Delphi) : Le Site

  7. #7
    Membre habitué
    Avatar de Leobaillard
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    313
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 313
    Points : 171
    Points
    171
    Par défaut
    Non ? Vraiment rien ?
    /// ( : Léo : ) \\\
    ---C'est parce que la vitesse de la lumière est supérieure à celle du son, que certains paraissent brillants avant d'avoir l'air con---
    http://leobaillard.org (Hébergement gratuit, prog, forums, et autres)

    -------------------------

    L'orbe du temps (Zelda like 2D en Delphi) : Le Site

  8. #8
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    dsl je pensais avoir créé un topic

  9. #9
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut Programme détectant les connexions wifi
    salut

    je voudrais savoir si c'est possible de faire un prog qui detect les connexions wifi qui se trouve aux alentours de chez moi

    exactement comme les cartes le font

    avec les info comme le type de clé wep et sécurisé, non sécurisé ect ...

Discussions similaires

  1. Récupérer des informations sur les ordis du domaine
    Par Marie_ dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/12/2009, 09h54
  2. Réponses: 9
    Dernier message: 19/06/2008, 12h19
  3. Réponses: 6
    Dernier message: 25/09/2007, 19h45
  4. Récupérer des Informations sur un PC via un Réseau ?
    Par MaTHieU_ dans le forum Administration
    Réponses: 6
    Dernier message: 22/11/2005, 12h39
  5. Réponses: 6
    Dernier message: 28/09/2003, 17h49

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