Demande de code

Résolu
wowcrax Messages postés 16 Date d'inscription mercredi 7 juillet 2010 Statut Membre Dernière intervention 27 novembre 2010 - 21 nov. 2010 à 19:00
wowcrax Messages postés 16 Date d'inscription mercredi 7 juillet 2010 Statut Membre Dernière intervention 27 novembre 2010 - 27 nov. 2010 à 20:18
Bonjour, je suis nouveau sur ce forum et j'ai remarqué qu'il y avait beaucoup de personnes compétente dans le langage C. De plus je dois dire, que je ne suis pas très calé et c'est pourquoi je viens poster.

J'ai fait un code en C++ qui deande un mot de passe, trois en faite, et si on se trompe dans l'un un commande est effectué, et si les trois sont bon, le prgramme se ferme.

Le seule soucis, c'est que j'aimerai laissé seulement 30 secondes pour entrer un mot de passe. Voilà.

Quelqu'un peut-il m'aider ? Merci d'avance pour les réponses.


Cordialement,

WoWcrax

27 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
22 nov. 2010 à 18:24
Je te conseil de lire le livre de Petzold que tu pourras trouver sur le site de Brunews:
http://www.brunews.com/cptclic.aspx?id=21&fl=upload_code/cp5.zip

Il y a tout dedans pour débuter en programmation Windows.
A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
3
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
25 nov. 2010 à 17:38
Du coup comme tu utilises la console pour afficher tes mdp, tu ne peux pas utiliser SetTimer. Il faut que tu crées le tiens...
Regarde la fonction GetLocalTime()
A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
3
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
22 nov. 2010 à 11:26
Bonjour,

Pour ce problème, j'utiliserai un timer réglé sur 30 secondes et non un second thread.

A+


____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
1
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
21 nov. 2010 à 19:22
Crée un thread qui fera Sleep(30000); et un autre pour demander le mot de passe. Si le premier a fini avant le deuxième, quitte l'appli.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wowcrax Messages postés 16 Date d'inscription mercredi 7 juillet 2010 Statut Membre Dernière intervention 27 novembre 2010
22 nov. 2010 à 16:51
Tu aurais un exemple de code stp Pistol_Pete ? Merci bien.
0
wowcrax Messages postés 16 Date d'inscription mercredi 7 juillet 2010 Statut Membre Dernière intervention 27 novembre 2010
22 nov. 2010 à 17:20
Cool merci.
0
wowcrax Messages postés 16 Date d'inscription mercredi 7 juillet 2010 Statut Membre Dernière intervention 27 novembre 2010
22 nov. 2010 à 17:49
J'ai bien trouver ce code:
#include <windows.h>
#include <mmsystem.h>
/***** Déclaration de la classe *****/
class Timer
{
LONGLONG start_time;
LONGLONG cur_time;
LONGLONG last_time;
float time_elapsed;
float time_scale;
float GetTimePerf();
//float GetTime();
public:
Timer();                                 // Constructeur
~Timer();                               // Destructeur

void Start();                            // Initialisation du timer
float GetTotalElapsedTime();     // Temps écoulé depuis l'initialisation du timer
float GetElapsedTime();            // Temps écoulé entre deux appels de la fonction
};
/***** Description des méthodes de la classe *****/
Timer::Timer()
{
}
Timer::~Timer()
{
}
void Timer::Start()
{
LONGLONG perf_cnt = 0;
//if (QueryPerformanceFrequency((LARGE_INTEGER *) &perf_cnt)){
time_scale = 1.0f / perf_cnt;
QueryPerformanceCounter((LARGE_INTEGER *) &start_time);
last_time = start_time;
//}else{
// start_time last_time timeGetTime();
// time_scale = 0.001f;
//}
}
//float Timer::GetTime()
//{
//return (float)timeGetTime();
//}
float Timer::GetTimePerf()
{
QueryPerformanceCounter((LARGE_INTEGER *) &cur_time);

return (float)cur_time;
}
float Timer::GetTotalElapsedTime()
{
cur_time = this->GetTimePerf();
time_elapsed = (cur_time - start_time) * time_scale;
last_time = cur_time;
return time_elapsed;
}
float Timer::GetElapsedTime()
{
cur_time = this->GetTimePerf();
time_elapsed = (cur_time - last_time) * time_scale;
last_time = cur_time;
return time_elapsed;
}

Mais il ne fonctionne pas. Le message d'ereur est undefined reference to `WinMain@16'
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
22 nov. 2010 à 17:54
Si tu as creer un projet console, le point d'entré de ton programme est la fonction main. Si tu as creer un projet windows, le point d'entré est le WinMain.

La le compilo te dit juste qu'il n'a pas trouvé la fonction WinMain.

A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0
wowcrax Messages postés 16 Date d'inscription mercredi 7 juillet 2010 Statut Membre Dernière intervention 27 novembre 2010
22 nov. 2010 à 17:57
Oui, mais je l'ajoute où ? Parce que quand je l'ajoute au debut j'ai une cascade d'erreurs.
0
wowcrax Messages postés 16 Date d'inscription mercredi 7 juillet 2010 Statut Membre Dernière intervention 27 novembre 2010
22 nov. 2010 à 18:44
Ok, merci. Je donnerai des nouvelles quand j'aurai fini de lire.
0
wowcrax Messages postés 16 Date d'inscription mercredi 7 juillet 2010 Statut Membre Dernière intervention 27 novembre 2010
24 nov. 2010 à 18:22
Bah, j'ai fini de lire et ça m'aide pas :( dommage.
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
25 nov. 2010 à 08:49
Livre de Charles Petzold
Les Timer : Section 1 chapitre 8

Comment ca ca ne t'aide pas?
A+
____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0
wowcrax Messages postés 16 Date d'inscription mercredi 7 juillet 2010 Statut Membre Dernière intervention 27 novembre 2010
25 nov. 2010 à 17:02
Ca ne m'aide pas, parce que tout les codes que je trouve qui font limité du temps ne s'assimile pas avec mon code présent, il s'exécute soit avant, soit après.
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
25 nov. 2010 à 17:05
Oui effectivement, il faut utiliser les callback pour que ca marche...


____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0
wowcrax Messages postés 16 Date d'inscription mercredi 7 juillet 2010 Statut Membre Dernière intervention 27 novembre 2010
25 nov. 2010 à 17:08
Tu peux m'en dire un peu plus sur ça ??
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
25 nov. 2010 à 17:15
Pas plus de ce qui est écrit dans le livre de Petzold.
En deux mots, tous les éléments de ton interface graphique sont considérés comme des objets qui interagisse avec des messages.
Les messages sont soit envoyés par Windows (ordre de redessiner la fenetre, timer...) soit par une action que tu as fait : un clique de souris, l'appuie sur une touche...

Ainsi le programme entre en action que quand il y a des messages à traiter ce qui permet de ne pas monopoliser le CPU. Puisque dans 90% du temps, le programme ne fait qu'attendre une action.
Les fonctions qui traitent ces messages sont des fonctions callback.

En utilisant ce procédé, ton timer sera exécuter en même temps que la saisi de caractère.

A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0
wowcrax Messages postés 16 Date d'inscription mercredi 7 juillet 2010 Statut Membre Dernière intervention 27 novembre 2010
25 nov. 2010 à 17:27
En clair, quelqu'un pourrait-il me donner un code qui limite la saisie de mot de passe à 30 sec a partir de clui ci-dessous ?

Voici le code pour entrer le mot de passe :
#include <cstdlib>
#include <conio.h>
#include <stdlib.h>
#include 
#include <time.h>
#include <stdio.h>
#include <windows.h>
#include <winable.h>


using namespace std;

int getnombre()
{

  HWND hConsole = GetConsoleWindow();
  HMENU hMenu = GetSystemMenu( hConsole, false );

  if( DeleteMenu ( hMenu, SC_CLOSE, MF_BYCOMMAND ))
  cout << "(1/3)Veuillez saisir le premier mot de passe pour fermer ce programme." << endl;
  int c;
  int n=0;
  do
        {
                c=getch();
                if (c>='0' && c<='9')
                {
                        n*=10;
                        n+=(c-'0');
                        cout << "*";
                        cout.flush();
                }
        }
        while(c!=13);
        cout << endl;
        return n;
}	int timeleft;
int main()
{
        system ("color 04");
        int a;
        a=getnombre();
        if (a == 84955222)
           {
                  cout << "(2/2) Bon mot de passe." << endl;
           }

        else

           {
                  cout << "Mot de passe saisi incorrecte.
system("pause")
}
0
wowcrax Messages postés 16 Date d'inscription mercredi 7 juillet 2010 Statut Membre Dernière intervention 27 novembre 2010
25 nov. 2010 à 17:40
Ok merci je vais voir.
0
wowcrax Messages postés 16 Date d'inscription mercredi 7 juillet 2010 Statut Membre Dernière intervention 27 novembre 2010
25 nov. 2010 à 17:55
Apparement getlocaltime sert juste a avoir la date et l'heure.
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
25 nov. 2010 à 18:11
Oui, il faut que tu lises le champ seconde au début de ton programme puis dans ta boucle while comme ca tu auras le temps écoulé depuis le lancement...

A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0
Rejoignez-nous