Programmera "byt-bakgrund-i-windows"?

Permalänk
Medlem

Programmera "byt-bakgrund-i-windows"?

Hej!

Fick en fundering idag om att göra ett program som byter bakgrund då jag startar upp datorn.
Mina tankar är att programmet ska...
- köras då datorn startas.
- ska läsa in aktuellt datum från windows.
- om datumet != datumet innan ska bakgrund bytas.
- bakgrund ska bytas mha en mapp med ett antal bilder i sig.

Har haft en del kurser inom programmering och sitter i c++ just nu. Men har inte en aning om hur man kopplar programmet till att ändra saker i windows.

Någon som har en fundering om det går att fixa utan 1000 rader kod? Tycker det ser ut som att inte behöva bli så mkt kod bara man vet hur man ska göra? men som sagt, inte så erfaren så kan ha fel.

Någon med lite tips? (främst hur man byter bakgrundsbild samt läser in dagens datum)

tack på förhand!

Permalänk
Medlem

http://social.msdn.microsoft.com/forums/en-US/windowssdk/thre...
Borde va snabbt gjort att kasta ihop en C# app som gör d du vill

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem

Jag tänkte bara snabbt, det går ju att ändra bakgrundsbild med hjälp av .bat-filer, så du kanske kan programmera ditt program till att starta en sån fil?

Visa signatur

i5 750 @ 3.9 GHz | NH-D14 | P7P55D |GTX 960 | Vulcan 8GB | Seagate 600 480 GB | Newton 650w | P280 | Dell U2515H

Permalänk
Medlem

Tror dessa rader bör räcka i Autoit:

RegWrite("HKCU\Control Panel\Desktop", "Wallpaper", "REG_SZ", "background image" )

Run("RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters ,1 ,True")

Sen hur du skriver i register och anropar dll filer i ditt nuvarande språk får du kolla upp själv

Permalänk
Medlem

Om man gör det från cmd så fungerar iaf inte reg add för mej, antar man måste använda regedit isf...

Permalänk
Medlem

Skillnad mellan XP & (Vista/Win7)!

Detta är vad jag kommit fram till de senaste timmarna (XP):

#include <windows.h> #include <stdlib.h> #include <stdio.h> #include <iostream> int main(){ char* dir[] = {"Control Panel\\Desktop"}; char* key[] = {"WallPaper"}; char* wlp[] = {"C:\\2596.jpg"}; HKEY keyHandle; char regValue[260]; DWORD size = 259; DWORD type; printf("A small desktop image changer by Dalton Sleeper (XP)\n\n"); // read if(RegOpenKeyEx(HKEY_CURRENT_USER, dir[0], 0, KEY_QUERY_VALUE, &keyHandle) == ERROR_SUCCESS){ RegQueryValueEx(keyHandle, key[0], NULL, &type, (LPBYTE)regValue, &size); printf("Registry key: \"HKEY_CURRENT_USER\\%s\"\n\n%s: %s\n", dir[0], key[0], regValue); } else printf("The registry key could not be read!\n"); RegCloseKey(keyHandle); // write if(RegOpenKeyEx(HKEY_CURRENT_USER, dir[0], 0, KEY_SET_VALUE, &keyHandle) == ERROR_SUCCESS){ if (RegSetValueEx(keyHandle, key[0], 0, REG_SZ, (LPBYTE)wlp[0], strlen(wlp[0]) * sizeof(char)) == ERROR_SUCCESS){ printf("\n\nRegistry key: \"HKEY_CURRENT_USER\\%s\"\n\n%s: %s\n", dir[0], key[0], wlp[0]); } else printf("The registry key could not be set!\n"); } RegCloseKey(keyHandle); // refresh system("RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters"); system("pause"); return 0; }

(Vista/Win7):

#include <windows.h> #include <stdlib.h> #include <stdio.h> #include <iostream> char* image_1[] = {"c:\\2596.jpg"}; char* image_2[] = {"c:\\2595.jpg"}; char buffer[260]; printf("Another small desktop image changer by Dalton Sleeper (Vista/Win7)\n\n"); // get current wallpaper SystemParametersInfo(SPI_GETDESKWALLPAPER, sizeof(buffer), buffer, 0); // if the same, switch to the other one if(strcmp(buffer, *image_2) == 0) SystemParametersInfo(SPI_SETDESKWALLPAPER, sizeof(*image_1), *image_1, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE); else SystemParametersInfo(SPI_SETDESKWALLPAPER, sizeof(*image_2), *image_2, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE); // system("pause"); return 0;

Här är det möjligt att fånga returvärdet från SystemParametersInfo om man tycker det är intressant...
Det ovanstående fungerade hyfsat på min dator men det betyder inte att era sopburkar åker inte på blue screen eller brinner upp. Tänk på att detta är windowsregistret som i princip styr allt i operativsystemet och att mycket kan gå åt pipsvängen om minsta lilla går fel vid till exempel skrivning eller borttagning. Testa på egen risk säger jag bara