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 :

[D6] Souci avec SetComputerName


Sujet :

Delphi

  1. #1
    Membre du Club Avatar de Vinceee38
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 65
    Points
    65
    Par défaut [D6] Souci avec SetComputerName
    Bonjour à tous ,
    je suis en train de coder un programme en delphi et je rencontre un petit probleme , j'ai creer un bouton qui permet de modifier le nom de l'ordinateur (récuperer dans un champ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm4.Button3Click(Sender: TObject);
    begin
      if SetComputerName(PChar(Edit1.Text)) then
        ShowMessage('Redémarrer l''ordinateur afin de prendre en compte la modification')
      else
        ShowMessage('Erreur : Nom non valide ou vous n''avez pas les droits d''administrateur')
    end;

    Mais une fois lancé, il s'est passé un truc incohérent après plusieurs reboot la commande echo %computername%" afffichait bien le nouveau nom et l'onglet système l'ancien !!

    Qu'est ce qu'il faut faire de plus s'il vous plait ??? merci d'avance

  2. #2
    Membre du Club Avatar de Vinceee38
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    D'aprés mes recherches j'ai l'impression que je dois utiliser SetComputerNameEx mais je ne comprend pas trop comment cette fonction marche ...

    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
    type
      TComputerNameFormat = ( 
      ComputerNameNetBIOS, 
      ComputerNameDnsHostname, 
      ComputerNameDnsDomain, 
      ComputerNameDnsFullyQualified, 
      ComputerNamePhysicalNetBIOS, 
      ComputerNamePhysicalDnsHostname, 
      ComputerNamePhysicalDnsDomain, 
      ComputerNamePhysicalDnsFullyQualified, 
      ComputerNameMax );
      COMPUTER_NAME_FORMAT = TComputerNameFormat;
     
    function SetComputerNameEx(
      NameType: TComputerNameFormat;
      lpBuffer: PChar
    ): BOOL; stdcall;
    external kernel32 name 'SetComputerNameExA';
    j'ai rajouté ceci mais quand je compile j'ai l'erreur suivante :

    ": attendu mais = trouvé" pour TComputerNameFormat =
    ...

  3. #3
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour

    ben oui c'est explicite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COMPUTER_NAME_FORMAT := TComputerNameFormat;
    à plus

  4. #4
    Membre du Club Avatar de Vinceee38
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    merci de ta réponse mais l'erreur ne vient pas de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COMPUTER_NAME_FORMAT := TComputerNameFormat;
    mais de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    TComputerNameFormat = ( 
      ComputerNameNetBIOS, 
      ComputerNameDnsHostname, 
      ComputerNameDnsDomain, 
      ComputerNameDnsFullyQualified, 
      ComputerNamePhysicalNetBIOS, 
      ComputerNamePhysicalDnsHostname, 
      ComputerNamePhysicalDnsDomain, 
      ComputerNamePhysicalDnsFullyQualified, 
      ComputerNameMax );

  5. #5
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    C'est marrant, ça ! Moi, j'ai copié/collé ton code, et ça passe sans problème à la compilation. La déclaration du type énuméré est correcte, le synonyme est bien déclaré aussi (oui, entre deux types c'est bien = et pas :=), la fonction itou, je ne vois pas où est l'erreur.

    Par contre, pour ce qui est du problème que tu soulevais, j'ai trouvé un autre vieux fil sur le site, de quelqu'un qui a exactement le même problème et une solution, mais en C# :
    http://www.developpez.net/forums/sho...d.php?t=136567

    D'ailleurs, c'est drôle, il y a exactement la même quesiotn, posée tout pareil !

    Sinon, autre question que je me pose : les types énumérés du Pascal et du C sont-ils compatibles ? Il peut (peut-être !) y avoir problème à ce niveau, non ?

  6. #6
    Membre du Club Avatar de Vinceee38
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    CapJack merci pour ta réponse tu utilise quelle version de delphi stp ?? car moi je te promet que j'ai un problème de compilation

    Concernant ce post :http://www.developpez.net/forums/sho...d.php?t=136567 je l'avais vu mais n'étant pas du delphi j'ai ouvert un nouveau post.

    EDIT : En fait pour la compilation j'ai trouvé mon erreur je devais le mettre avant le TFORM , désolé du dérangement et merci CapJack

  7. #7
    Membre du Club Avatar de Vinceee38
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    Donc y avait quelques changements à faire , je vais tout expliquer pour que les prochains y arrivent sans problèmes:

    Donc il faut tout d'abord rajouter au tout début aprés USES:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Const
      kernel32                        = 'kernel32.dll';
    Ensuite avant les procédures copier ceci :

    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
    type
      TComputerNameFormat = (
      ComputerNameNetBIOS,
      ComputerNameDnsHostname,
      ComputerNameDnsDomain,
      ComputerNameDnsFullyQualified,
      ComputerNamePhysicalNetBIOS,
      ComputerNamePhysicalDnsHostname,
      ComputerNamePhysicalDnsDomain,
      ComputerNamePhysicalDnsFullyQualified,
      ComputerNameMax );
      COMPUTER_NAME_FORMAT = TComputerNameFormat;
     
    function SetComputerNameEx(
      NameType: TComputerNameFormat;
      lpBuffer: PChar
    ): BOOL; stdcall;
    external kernel32 name 'SetComputerNameExA';
    et Enfin utiliser SetComputerNameEx de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm4.Button3Click(Sender: TObject);
     
    begin
      if SetComputerName(PChar(Edit1.Text)) AND Win32Check(SetComputerNameEx(ComputerNamePhysicalDnsHostname, PChar(Edit1.Text))) AND Win32Check(SetComputerNameEx(ComputerNamePhysicalNetBIOS, PChar(Edit1.Text)))
      then
        ShowMessage('Redémarrer l''ordinateur afin de prendre en compte la modification')
      else
        ShowMessage('Erreur : Nom non valide ou vous n''avez pas les droits d''administrateur')
    end;
    Chez moi ca marche nikel avec Delphi 6

    J'éspère que ca servira à quelqu'un
    ++

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

Discussions similaires

  1. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  2. SOucis avec une reequete imbriquee
    Par Ni4k dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/03/2004, 08h56
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 17h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

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