#include <iostream>		                // header pour les sorties
#include "Windows.h"	                        // header pour la DLL

using namespace std;	                        // toujours pour les sorties

typedef bool (CALLBACK* VerifPwd)(char *);	// dfinition d'une structure pour la fonction appele
VerifPwd pVerifPwd = NULL;			// dclaration d'un pointeur pour stocker l'adresse de la fonction

int main()
{
	char pass[10];	                                        // tableau d'entre du mot de passe
	HMODULE hDll;	                                        // dclaration d'un handle vers la dll

	hDll = LoadLibrary("verif.dll");	                // on charge la DLL en mmoire

	if(!hDll)		                                // si elle n'est pas charge...
		cout << "La DLL n'a pas pu etre trouvee.\n";	// ... on affiche une erreur

	else	// sinon on continue
	{
		pVerifPwd = (VerifPwd)GetProcAddress(hDll,"VerifPwd"); // on initialise le pointeur avec l'adresse de la                                                                        //fonction

		if(!pVerifPwd)														// si ca n'a pas fonctionn...
			cout << "La fonction n'a pas pu etre trouvee dans la DLL\n";	// ... on affiche une erreur

		else	// sinon on continue
		{
			cin.getline(pass, 10);	        // le mot de passe est stock dans le tableau

			if(pVerifPwd(pass))		// appel de la fonction de la DLL
				cout << "Vous etes bien enregistre.\n\n";

			else
				cout << "Le mot de passe est errone.\n\n";				
		}

		FreeLibrary(hDll);			// on libre la DLL de la mmoire
	}

	system("pause");
	return 0;
}
