vendredi 11 mai 2007

Changement de fond d'écran automatique, cette fois sous Windows !

Edit : Légère correction des sources le 13/05/07.

Et oui j'ai récidivé :) Je me suis amusé à coder un script équivalent à celui présenté dans ce billet, mais cette fois pour le système d'exploitation Windows!

J'ai donc réalisé une application en C++ qui fait grosso modo les mêmes choses :
1 : on télécharge la page des dernières images sorties sur interfacelift.com, pour la résolution voulue
2 : si il existe de nouvelles images on les télécharge
3 : puis on choisit une image aléatoirement dans le dossier et on l'affiche sur le bureau

Vous avez la possibilité de changer la résolution des images à télécharger, il suffit de changer les variables resx et resy en début du main, il faut donc recompiler le projet, volontairement [nécessite l'installation du package GRETA pour Dev-C++].
Il n'y a aucune fenêtre ou console qui s'affiche, volontairement, mais vous pouvez le changer, cf commentaires ^^.


Et bien la première chose que j'ai à dire est la suivante : c'est VRAIMENT VRAIMENT plus fastidieux de coder ca en C++ plutôt que dans un script shell!
Purée qu'est-ce que c'est génial le shell dans le monde unix, il existe bon nombre de commandes simples qui permettent d'intéragir extrêmement facilement avec le système d'exploitation, en particulier avec le système de fichiers...
Je me suis vraiment fait ch*** là, mais bon j'y suis arrivé, pfiou.
Comme je l'explique plus en détails dans les commentaires du code, j'ai utilisé des librairies qui m'étaient inconnues, dont j'ai trouvé peu de documentation/exemples et qui était assez obscures. Par exemple :
-wininet pour télécharger des fichiers du net
-GRETA pour faire des expressions régulières
-GFL pour convertir des images jpg en bmp

Fichiers créées :
-dossier 'images_interfacelift'
-les images jpg sont téléchargées dans ce dossier
-fichier 'current.bmp'

Evidemment le programme effectue des requêtes sur internet, il faut donc que votre firewall lui en laisse l'accès pour que le téléchargement fonctionne.

Bon maintenant y'a plus qu'à créer une tâche planifiée pour que le script s'éxécute toutes les X minutes/heures...

Veillez d'abord à ce que le service "Plannificateur de tâches" soit démarré :
Démarrer -> Exécuter -> services.msc puis ok
Je vous conseille de mettre le démarrage en automatique sinon au prochain reboot du pc les tâches plannifiées ne seront plus exécutées car le service ne sera pas démarré ^^

Puis dans une console [Démarrer -> Exécuter -> cmd puis ok] (toutes les 2h ici) :

Schtasks /create /tn ChangeWallpaper /tr "D:\Temp\wallrenew\ChangeWallpaper.exe" /sc HOURLY /mo 2

Evidemment vous remplacez le chemin par l'endroit ou se touve le programme sur votre disque dur...

Le programme est fonctionnel sous XP mais pas sous Vista... Normal puisque j'ai codé ca sous dev-c++ avec le module windows32api de xp... Désolé... j'essayerai de faire une version pour vista si j'ai le temps et le courage!

Mon programme ChangeWallpaper

Aucun commentaire: