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

API, COM et SDKs Delphi Discussion :

Désactiver Connexion au réseau local


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Inscrit en
    Décembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 166
    Par défaut Désactiver Connexion au réseau local
    Bonjour,

    Je souhaite activer/desactiver une de mes connexion au reseau local ( j'en ai 2, bureau / maison ).

    J'ai deja trouvé des chose mais en VB et je voudrait le faire en Delphi histoire d'avoir l'application en TrayIcon...

    C'est une function de type ON / OFF ...

    Voici ce que j'ai commencé à retranscrire d'un bout de code que j'a trouvé en VB :

    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
    procedure TFormMain.SwitchOnOff;
    var
       sConnectionName : string;
       sEnableVerb : string;
       sDisableVerb : string;
       shellApp, oControlPanel, oNetConnections, oLanConnection: OleVariant;
     
       i: integer;
       bEnabled: boolean;
       oEnableVerb, oDisableVerb: Variant;
       s: string;
    begin
     
       sConnectionName := 'Connexion au réseau local';
     
       sEnableVerb := 'Activer';
       sDisableVerb := 'Désactiver';
     
       shellApp := CreateOleObject('shell.application');
       oControlPanel := shellApp.Namespace(ssfCONTROLS);
     
       oNetConnections := null;
     
       for i := 0 to oControlPanel.Items.Count - 1 do
       begin
          // C'est a ce niveau que ca plante *** 
     
          if oControlPanel.Items[i].Name = 'Connexions réseau' then
          begin
             oNetConnections := oControlPanel.Items[i].getfolder;
             break;
          end;
       end;
     
       if oNetConnections = null then
       begin
          MessageDlg('''Connexions réseau'' non trouvée', mtWarning, [mbOK], 0);
          Exit;
       end;
     
       oLanConnection := null;
     
       for i := 0 to oNetConnections.items.count - 1do
       begin
          if LowerCase(oNetConnections.items[i].Name) = LowerCase(sConnectionName) then
          begin
             oLanConnection := oNetConnections.items[i];
             break;
          end;
       end;
     
       if oLanConnection = null then
       begin
          MessageDlg(sConnectionName + ' non trouvée', mtWarning, [mbOK], 0);
          Exit;
       end;
     
       bEnabled := true;
     
       oEnableVerb := null;
       oDisableVerb := null;
     
       s := 'Verbs: ' + #13#10;
       for i := 0 to oLanConnection.verbs.Count - 1 do
       begin
         s := s + #13#10 + oLanConnection.verbs[i].name;
     
         if oLanConnection.verbs[i].name = sEnableVerb then
         begin
            oEnableVerb := oLanConnection.verbs[i];
            bEnabled := false;
         end;
     
         if oLanConnection.verbs[i].name = sDisableVerb then
            oDisableVerb := oLanConnection.verbs[i];
       end;
     
       if bEnabled then
       begin
          oLanConnection.invokeverb(sDisableVerb);
          oDisableVerb.DoIt;
       end
       else
       begin
          oLanConnection.invokeverb(sEnableVerb);
          oEnableVerb.DoIt;
       end;
    end;
    *** Au niveau du IF qui se trouve sous le commentaire, j'ai droit a une superbe erreur : membre introuvable.

    Comme la variable est definie en tant que Variant, je n'ai pas le droit au Ctrl+Espace.

    Je n'ai rien trouvé sur le sujet en Deplhi...

    Merci d'eclairer ma lanterne.

  2. #2
    Invité de passage
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1
    Par défaut
    Bonjour,

    desole pour la reponse tardive mais je viens d'avoir le meme probleme

    donc j'ai essayé de debugger ton code

    et ca donne ça

    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
    procedure TFormMain.SwitchOnOff;
    var
       sConnectionName : string;
       sEnableVerb : string;
       sDisableVerb : string;
       shellApp, oControlPanel, oNetConnections, oLanConnection: OleVariant;
     
       i: integer;
       bEnabled: boolean;
       oEnableVerb, oDisableVerb: Variant;
       s: string;
    begin
     
       sConnectionName := 'Connexion au réseau local';
     
       sEnableVerb := '&Activer';
       sDisableVerb := '&Désactiver';
     
       shellApp := CreateOleObject('shell.application');
       oControlPanel := shellApp.Namespace(3);
     
       oNetConnections := null;
     
       for i := 0 to oControlPanel.Items.Count - 1 do
       begin
     
          if oControlPanel.Items.item(i).Name = 'Connexions réseau' then
          begin
             oNetConnections := oControlPanel.items.Item(i).getfolder;
             break;
          end;
       end;
     
       if VarIsNull(oNetConnections) then
       begin
          MessageDlg('''Connexions réseau'' non trouvée', mtWarning, [mbOK], 0);
          Exit;
       end;
     
       oLanConnection := null;
     
       for i := 0 to oNetConnections.items.count - 1do
       begin
          if oNetConnections.items.item(i).Name = sConnectionName then
          begin
             oLanConnection := oNetConnections.items.item(i);
             break;
          end;
       end;
     
       if VarIsNull(oLanConnection) then
       begin
          MessageDlg(sConnectionName + ' non trouvée', mtWarning, [mbOK], 0);
          Exit;
       end;
     
       bEnabled := true;
     
       oEnableVerb := null;
       oDisableVerb := null;
     
       s := 'Verbs: ' + #13#10;
       for i := 0 to oLanConnection.verbs.Count - 1 do
       begin
         s := s + #13#10 + oLanConnection.verbs.item(i).name;
         memo1.lines.add(oLanConnection.verbs.item(i).name);
         if oLanConnection.verbs.item(i).name = sEnableVerb then
         begin
            oEnableVerb := oLanConnection.verbs.item(i);
            bEnabled := false;
         end;
     
         if oLanConnection.verbs.item(i).name = sDisableVerb then
            oDisableVerb := oLanConnection.verbs.item(i);
       end;
     
       if bEnabled then
       begin
          oLanConnection.invokeverb(sDisableVerb);
          oDisableVerb.DoIt;
       end
       else
       begin
          oLanConnection.invokeverb(sEnableVerb);
          oEnableVerb.DoIt;
       end;
    end;

  3. #3
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Bonjour,

    Je viens de tester sous Vista ce super code, mais une boîte me retourne :
    "Connexions réseau non trouvée'

    Mais je n'ai pas neutralisé mon UAC pour approfondir.

    Qui d'autre peut m'infirmer ou me confirmer que sous Vista ce code est fonctionnel ?

    Merci

Discussions similaires

  1. Problème avec la connexion au réseau local
    Par jeromek dans le forum Administration
    Réponses: 0
    Dernier message: 06/07/2009, 15h59
  2. Problème avec connexion au réseau local
    Par eon-of-the-scorn dans le forum Windows XP
    Réponses: 6
    Dernier message: 24/03/2007, 19h06
  3. disparition des icônes "connexion au réseau local"
    Par Piccolo_son dans le forum Administration
    Réponses: 8
    Dernier message: 27/09/2006, 12h09
  4. [RESEAU] Perte de connexion au réseau local
    Par KibitO dans le forum Administration
    Réponses: 8
    Dernier message: 27/10/2005, 11h12
  5. Activer/Desactiver une connexion au réseau local
    Par Yodagobah dans le forum MFC
    Réponses: 7
    Dernier message: 05/01/2005, 17h17

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