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

C++Builder Discussion :

Affichage d'un message a l'ouverture de Window


Sujet :

C++Builder

  1. #1
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut Affichage d'un message a l'ouverture de Window
    Il y a quelques temps j'ai participe a une discution a ce sujet qui consistait a ecrire sur le papier peint du bureau, ici je propose une solution trouve par hasard qui affiche une boite de dialogue juste avant l'ecran de bienvenue.
    ouvrir regedit
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
    rechercher deux clef
    1 - LegalNoticeCaption, y inscrire le titre de la boite de dialogue, Exemple "Titre De La Boite"
    2 - LegalNoticeText, y inscrire le texte qui sera affiche dans la boite de dialogue, Exemple "Texte qui sera affiche dans la boite de dialogue"
    Il n'est pas necessaire de mettre le texte entre les " "
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    J'ai essaye de lire la cle de la base de registre par programme, mais j'obtient toujours une valeur NULL, je me suis inspire de la FAQ, mais j'ai du louper quelque chose et je ne trouve pas
    le code:
    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
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include <Registry.hpp>
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    TRegistry *registre = new TRegistry();
            registre->RootKey = HKEY_LOCAL_MACHINE;
        registre->OpenKey("<a href="file://\\SOFTWARE\\Microsoft\\WindowsNT\\CurrentVersion\\Winlogon\\LegalNoticeCaption" target="_blank">\\SOFTWARE\\Microsoft\\WindowsNT\\CurrentVersion\\Winlogon\\LegalNoticeCaption</a>", true);
        if (registre->KeyExists("LegalNoticeCaption"));
        {
    String S = registre->ReadString("LegalNoticeCaption");
    ListBox1->Items->Add(S);
    //    }
        if (registre->ValueExists("LegalNoticeCaption"));
        {
    AnsiString S = registre->ReadString("LegalNoticeCaption");
    ListBox1->Items->Add(S);
        }
    }
    registre->CloseKey();
    delete registre;
    }
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    Remplacer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        registre->OpenKey("<a href="file://\\SOFTWARE\\Microsoft\\WindowsNT\\CurrentVersion\\Winlogon\\LegalNoticeCaption" target="_blank">\\SOFTWARE\\Microsoft\\WindowsNT\\CurrentVersion\\Winlogon\\LegalNoticeCaption</a>", true);
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    registre->OpenKey("SOFTWARE\\Microsoft\\WindowsNT\\CurrentVersion\\Winlogon",true);

  4. #4
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Oui la base de registre ne prend pas encore les lien hypertexte il me semble
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Merci de ta reponse josse95
    Je ne l'avais pas vu, a la copie la chaine a ete modifiee, mais c'est le bon chemin comme tu l'indique qui est dans le programme.
    Tu est moqueur Pottiez
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  6. #6
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Oui c'est de famille
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    Effectivement, il y a le problème des liens hypertexte, mais surtout, le fait que tu fais figurer LegalNoticeCaption dans le OpenKey, ce qui est la cause de l'erreur (regarde bien ma réponse !)

  8. #8
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    J'ai aussi fait l'essai sans "LegalNoticeCaption" et j'avais aussi le meme probleme, j'ai aussi modifie le true a la fin en false rien n'y fait
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    Une autre chose que je n'avais pas vue. Il faut utiliser ValueExists à la place de KeyExists.
    LegalNoticeCaption n'est pas une clé.

  10. #10
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Récapitulons:
    1) pas de <a href dans OpenKey()
    2)ValueExists mais pas KeyExists

    Blondelle!!!!
    Mais qu'est ce que tu veux faire, écrire sur le papier-peint ou faire un showmessage au démarrage de windows ou un splashscreen ????
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  11. #11
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Merci rakoto15 pour ta reponse
    Blondelle!!!!
    Mais qu'est ce que tu veux faire, écrire sur le papier-peint ou faire un showmessage au démarrage de windows ou un splashscreen ????
    Je veux simplement essayer de programmer l'affichage d'une boite de dialogue a l'ouverture de Windows juste avant l'ecran de bienvenue ca marche en manuel, comme il vaut mieux faire attention avec la base de registre dans un premier temps j'essaye de lire les valeurs que j'ai programmee manuellement.
    Ca ne touche pas au papier peint, et je ne pense pas que ca peut s'appeler un splashscreen, ca ressemble plutot a un memo quand on la lu on click OK la boite s'efface et window se charge normalement
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  12. #12
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Je reposte le code tel qu'il aurrait du l'etre.
    Dans un premier temps je teste si la clef existe, si oui je teste si la valeur existe
    TRegistry *registre = new TRegistry();
    registre->RootKey = HKEY_LOCAL_MACHINE;
    registre->OpenKey("\\SOFTWARE\\Microsoft\\WindowsNT\\CurrentVersion\\Winlogon", true);
    if (registre->KeyExists("LegalNoticeCaption"));
    {
    if (registre->ValueExists("LegalNoticeCaption"));
    {
    AnsiString S = registre->ReadString("LegalNoticeCaption");
    ListBox1->Items->Add(S);
    }
    }
    registre->CloseKey();
    delete registre;
    Je recupere toujours une valeur NULL
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    Au risque de me répéter, LegalNoticeCaption n'est pas une clé.
    Si tu veux tester l'existence de la clé, c'est WinLogon que tu dois tester. Mais c'est inutile si tu mets le 2ème paramètre du OpenKey à true, dans la mesure où le OpenKey va te créer la clé.

    Je te propose donc le code suivant où j'ai mis le 2ème paramètre du OpenKey à false:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    TRegistry *registre = new TRegistry();
    registre->RootKey = HKEY_LOCAL_MACHINE;
    if (registre->OpenKey("SOFTWARE\\Microsoft\\WindowsNT\\CurrentVersion\\Winlogon", false) &&
      registre->ValueExists("LegalNoticeCaption"))
    {
      ListBox1->Items->Add(registre->ReadString("LegalNoticeCaption"));
    }
    registre->CloseKey();
    delete registre;
    Tape le code tel quel, et si cela ne marche pas (à condition que tu aies les droits d'accès à la base de registre, mais cela tu peux le vérifier par regedit), je me fais moine.

  14. #14
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Je ne passe pas sur la ligne
    ListBox1->Items->Add(registre->ReadString("LegalNoticeCaption"));
    Au niveau des droits pas de probleme je suis l'administrateur (c'est mon ordinateur personnel).
    est ce que cela ne pourrait pas venir que dans "Winlogon" il y est 32 parametres exemple: "LegalNoticeCaption", "LegalNoticeText" ....
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    Non.
    Mais peut-être est-ce dû à l'espace qui manque entre Windows et NT.

    La clé n'est pas WindowsNT mais Windows NT.
    Je ne l'avais pas remarqué au début en recopiant ton texte.

  16. #16
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Merci pour ta reponse josse95:
    C'est bien l'espace entre Windons et NT qui manquait la fonction marche maintenant en lecture.
    J'ai encore une petite question si je veu supprimer la chaine de caracteres sans supprimer la clef est ce qu'il vaut mieux utiliser "registre->DeleteValue("nom_de_la_valeur");", ou ecrire une chaine vide ""
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    DeleteValue va te supprimer la valeur.
    Ex: si tu fais DeleteValue("LegalNoticeCaption"), la fonction ValueExists("LegalNoticeCaption") va te renvoyer false.
    Si tu veux juste effacer le contenu, écris plûtôt une chaine vide.

  18. #18
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Merci c'est bien ce que j'avais compris je teste et je repost
    A+
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  19. #19
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    je poste le code qui permet de lire, ecrire, effacer une boite de dialogue avant affichage du papier peint en utilisant la base de registre.
    le code:
    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
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include <Registry.hpp>
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    // ce programme sur XP pro, a verifier que ces clefs existent bien au meme
    // emplacement sur un autre systeme d'exploitation, vous modifiez la base
    // de registre a vos risques et perils
    {
    // on lit la valeur des clefs
    TRegistry *registre = new TRegistry();
            registre->RootKey = HKEY_LOCAL_MACHINE;
    registre->OpenKey("<a href="file://\\SOFTWARE\\Microsoft\\Windows" target="_blank">\\SOFTWARE\\Microsoft\\Windows</a> NT\\CurrentVersion\\Winlogon", true);
    // on lit la valeur de la premiere clef
            if (registre->KeyExists("LegalNoticeCaption"));
                    {
            if (registre->ValueExists("LegalNoticeCaption"));
            {
            Edit1->Text = registre->ReadString("LegalNoticeCaption");
            }
                    }
    // on lit la valeur de la deuxieme clef
            if (registre->KeyExists("LegalNoticeText"));
                    {
            if (registre->ValueExists("LegalNoticeText"));
            {
            Memo1->Text = registre->ReadString("LegalNoticeText");
            }
                    }
    delete registre;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    // on efface la valeur des clefs
    TRegistry *registre = new TRegistry();
            registre->RootKey = HKEY_LOCAL_MACHINE;
    registre->OpenKey("<a href="file://\\SOFTWARE\\Microsoft\\Windows" target="_blank">\\SOFTWARE\\Microsoft\\Windows</a> NT\\CurrentVersion\\Winlogon", true);
    // on efface la valeur de la premiere clef
            if (registre->KeyExists("LegalNoticeCaption"));
                    {
            if (registre->ValueExists("LegalNoticeCaption"));
            {
            registre->WriteString("LegalNoticeCaption", "");
            }
                    }
    // on efface la valeur de la deuxieme clef
            if (registre->KeyExists("LegalNoticeText"));
                    {
            if (registre->ValueExists("LegalNoticeText"));
            {
            registre->WriteString("LegalNoticeText", "");
            }
                    }
    delete registre;
    // on efface le TEdit et le TMemo
            Edit1->Text = "";
            Memo1->Text = "";
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    // on ecrit la valeur des clefs
    TRegistry *registre = new TRegistry();
            registre->RootKey = HKEY_LOCAL_MACHINE;
    registre->OpenKey("<a href="file://\\SOFTWARE\\Microsoft\\Windows" target="_blank">\\SOFTWARE\\Microsoft\\Windows</a> NT\\CurrentVersion\\Winlogon", true);
    // on ecrit la valeur de la premiere clef
            if (registre->KeyExists("LegalNoticeCaption"));
                    {
            if (registre->ValueExists("LegalNoticeCaption"));
            {
            registre->WriteString("LegalNoticeCaption", Edit1->Text);
            }
                    }
    // on ecrit la valeur de la deuxieme clef
            if (registre->KeyExists("LegalNoticeText"));
                    {
            if (registre->ValueExists("LegalNoticeText"));
            {
            registre->WriteString("LegalNoticeText", Memo1->Text);
            }
                    }
    delete registre;
    // on efface le TEdit et le TMemo
            Edit1->Text = "";
            Memo1->Text = "";
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
    // on quitte le programme
            Form1->Close();
                    Application->Terminate();
    }
    //---------------------------------------------------------------------------
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  20. #20
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Wow, c'est intéressant ce que tu veux faire!

    Afficher qlq choses avant bienvenue, moi je ne sais pas le faire.
    Je suis aussi en attente des réponses des FORUMEURS.

    Maintenant que le code est correct, quel est le rôle de cette valeur LegalNoticeCaption. Bon, j'ai essayé de remplacer explorer.exe par mon prob et ensuite mon prog relance explorer.exe mais Bienvenue s'affiche toujours et la barre des tâches n'apparaît plus.

    @+
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

Discussions similaires

  1. VBA: Affichage d'un message lors de l'ouverture d'un fichier word
    Par LANGAZOU dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 02/03/2015, 19h32
  2. Réponses: 2
    Dernier message: 23/06/2008, 17h12
  3. [Débutant][Oracle 9.i]Affichage d'un message
    Par snoopy69 dans le forum Oracle
    Réponses: 3
    Dernier message: 12/06/2006, 10h15
  4. Probleme d'affichage de mon message
    Par zorba49 dans le forum ASP
    Réponses: 2
    Dernier message: 14/03/2006, 11h10
  5. Supprimer l'affichage d'un message d'erreur
    Par delphineleclerc1 dans le forum Access
    Réponses: 2
    Dernier message: 23/02/2006, 09h14

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