Soyez le premier à donner votre avis sur cette source.
Snippet vu 9 651 fois - Téléchargée 17 fois
// Permet de tromper le compilateur et transforme le programme console en appli WIN32 #define _WIN32_WINNT 0x0500 #include <windows.h> #include <iostream> #include <time.h> #include <cstdlib> #include <math.h> using namespace std; void Create_Save_BMP(float hm,char path[]); int main() { // Ces deux premieres lignes permettent au programme de s'executer dans une fenetre console invisible // (sauf dans les processus biensur) HWND hWnd = GetConsoleWindow(); ShowWindow( hWnd, SW_HIDE ); // On cree les variables temporelles SYSTEMTIME st; int oldTime=0; // Chemin de destination du fond d'ecran (peut être par exemple C:\\TEMP) char path[]="D:\\Docs\\Wallpaper\\wallpaper.bmp"; // Une petite boucle (pas tres propre je l'avoue) pour que le programme continue tout seul do { // on recupere l'heure actuelle GetLocalTime(&st); // Si on a une minute d'ecart avec la boucle d'avant, on peut alors modifier le papier peint if (abs(st.wMinute-oldTime)>0){ // On creer un nouveau ficher bmp pour le papier peint // (pour rester compatible avec Windows qui gere mal les autres formats...) // on passe en argument l'heure actuelle exprimee en minutes et arrondie a 2 chiffres Create_Save_BMP(round(100*((float)(st.wHour*60+st.wMinute)/60))/100,path); // on modifie le papier peint en allant le chercher la ou on l'a enregistre avec la fonction precedente SystemParametersInfo( SPI_SETDESKWALLPAPER, 0, (PVOID)path, SPIF_UPDATEINIFILE ); // on met a jour la sauvegarde du temps oldTime=st.wMinute; } }while(true); return 0; } // Fonction de creation et sauvegarde des BMPs void Create_Save_BMP(float hm,char path[]){ // Initialisation des variables int r=0,g=0,b=0; // Si vous ne voulez pas etirer le fond d'ecran avec windows, vous pouvez mettre ici la resolution de votre ecran // Une taille importante (1280x800) ralentit le programme pour rien car un BMP c'est vite lourd... int iWidth = 64; int iHeight = 64; HANDLE file; BITMAPFILEHEADER fileHeader; BITMAPINFOHEADER fileInfo; RGBTRIPLE image; DWORD write = 0; // Creation du BMP a proprement parler file = CreateFile(path,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); fileHeader.bfType = 19778; fileHeader.bfSize = sizeof(fileHeader.bfOffBits) + sizeof(RGBTRIPLE); fileHeader.bfReserved1 = 0; fileHeader.bfReserved2 = 0; fileHeader.bfOffBits = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); fileInfo.biSize = sizeof(BITMAPINFOHEADER); fileInfo.biWidth = iWidth; fileInfo.biHeight = iHeight; fileInfo.biPlanes = 1; fileInfo.biBitCount = 24; fileInfo.biCompression = BI_RGB; fileInfo.biSizeImage = 0; fileInfo.biXPelsPerMeter = 0; fileInfo.biYPelsPerMeter = 0; fileInfo.biClrImportant = 0; fileInfo.biClrUsed = 0; WriteFile(file,&fileHeader,sizeof(fileHeader),&write,NULL); WriteFile(file,&fileInfo,sizeof(fileInfo),&write,NULL); // C'est ici que sont definies les couleurs en fonction des heures // il est possible de les definir aleatoirement (rand()) ou de changer les fonctions a votre guise if (hm<4||hm>20)r=255; else{ if(hm>=4 && hm<8)r=255-255*(hm-4)/4; else{ if(hm>16 && hm<=20)r=255*(hm-16)/4; else r=0; } } if (hm<12&&hm>4)g=255; else{ if(hm>=12 && hm<16)g=255-255*(hm-12)/4; else{ if(hm>0 && hm<=4)g=255*(hm-0)/4; else g=0; } } if (hm<20 && hm>12)b=255; else{ if(hm>=20 && hm<24)b=255-255*(hm-20)/4; else{ if(hm>8 && hm<=12)b=255*(hm-8)/4; else b=0; } } // on ecrit la couleur dans le fichier et on l'enregistre for (int i = 0; i < (iWidth*iHeight); i++) { image.rgbtRed = r; image.rgbtGreen = g; image.rgbtBlue = b; WriteFile(file, &image, sizeof(RGBTRIPLE), &write, NULL); } CloseHandle(file); }
es ce quelqu' un aurait il une idée
merci
Salut
Compilateur: Default compiler
Exécution de gcc.exe...
gcc.exe "D:\Documents and Settings\Yohan\Bureau\c\screen.c" -o "D:\Documents and Settings\Yohan\Bureau\c\screen.exe" -I"D:\Dev-Cpp\include" -L"D:\Dev-Cpp\lib"
D:\Documents and Settings\Yohan\Bureau\c\screen.c:3:20: iostream: No such file or directory
D:\Documents and Settings\Yohan\Bureau\c\screen.c:5:19: cstdlib: No such file or directory
D:\Documents and Settings\Yohan\Bureau\c\screen.c:8: error: syntax error before "namespace"
D:\Documents and Settings\Yohan\Bureau\c\screen.c:8: warning: data definition has no type or storage class
D:\Documents and Settings\Yohan\Bureau\c\screen.c: In function `main':
D:\Documents and Settings\Yohan\Bureau\c\screen.c:37: error: `true' undeclared (first use in this function)
D:\Documents and Settings\Yohan\Bureau\c\screen.c:37: error: (Each undeclared identifier is reported only once
D:\Documents and Settings\Yohan\Bureau\c\screen.c:37: error: for each function it appears in.)
D:\Documents and Settings\Yohan\Bureau\c\screen.c: In function `Create_Save_BMP':
D:\Documents and Settings\Yohan\Bureau\c\screen.c:105: error: 'for' loop initial declaration used outside C99 mode
Exécution terminée
Yohan98 : Enlève le lignes suivantes du code :
#define _WIN32_WINNT 0x0500
HWND hWnd = GetConsoleWindow();
ShowWindow( hWnd, SW_HIDE );
Si le problème est réglé, c'est qu'il faudrait créer une GUI normale. En effet, ces 3 lignes ne servent qu'à masquer la console pour que le programme s'effectue en tâche de fond... pas très règlo je l'admet.
Si le problème persiste, c'est peut-être que tu n'es pas sous windows.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.