Bonjour à tous !
Toujours dans ma quête de m'amuser avec le shell :) j'ai cette fois imaginé une vidéo en fond d'écran à la place de l'habituel wallpaper statique.
Ceci va permettre de rendre un peu plus vivant l'os et par la même occasion consommer du CPU !
Qu'à cela ne tienne, c'est parti !
********************************************** ****
Que sait-on sur le shell ?
************************************************ **
Active Desktop permet d'afficher une page web en fond d'écran, il va donc falloir jouer avec.
La page web sera un player Windows Media étalé sur 100% de la longueur/largeur de la page, avec des marges nulles.
Pour information, ActiveDesktop permet d'afficher plusieurs items sur le bureau, ainsi on peut se retrouver avec 15 pages web flottantes...(vous pouvez également le tester en vous baladant dans le panneau d'affichage).
*********************************** ***************
1-Objet Active Desktop
****************************************** ********
Nous entrons direct dans les entrailles du Shell avec la technologie COM de Microsoft, qui a fait le bonheur des programmeurs VB.
Pour faire simple et vite, il faut créer une instance d'objet IActiveDesktop. Après quoi nous aurons accès à l'ensemble des fonctionnalités d'ActiveDesktop qui je vous le rassure sont peu nombreuses.
Pour créer l'instance, on utilisera CoCreateInstance, qui nous allouera un objet de type IActiveDesktop, ce qui nous permettra d'accéder aux méthodes de la classe :).
Analogie :
En C++ :
---------------------------
IActiveDesktop * toto;
toto = new IActiveDesktop;
toto->Coucou();
delete toto;
En COM
---------------------------
IActiveDesktop * toto;
HRESULT hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
IID_IActiveDesktop, (void**)&toto);
toto->Coucou();
toto->Release();
//Note : Ca a l'air compliqué, mais ça ne l'ai pas :oP,
//CLSID_ActiveDesktop n'est autre que le CLSID (identifiant unique) de l'objet COM.
//Pour les newbies, faites un tour dans la base de registre HKCR/CLSID/ -> répertorie TOUS les objets COM
IMPORTANT: Qui dit COM dit appel des fonction CoInitialize en début de projet et CoUninitialize en fin de projet ! C'est impératif !
*********************************************** ***
2-Utilisation d'ActiveDesktop
********************************** ****************
Les méthodes dont nous aurons besoin sont :
- Set/GetDesktopItemOptions : Activer/Récupérer l'état d'ActiveDesktop
- Add/GetDesktopItem : Ajouter/Modifier un Item ActiveDesktop (entendez par là la fenêtre ou il y aura une page web)
- ApplyChanges : Mise à jour des modifications demandées par les autres fonctions de IActiveDesktop -> appel impératif
Je vous invite à regarder le source ci-dessous, j'ai commenté le remplissage de structure ^^.
L'invité surprise est IActiveDesktopP qui va permettre, via la fonction SetSafeMode, de verrouiller les items.
***************************************** *********
3-Touche finale
******************************************* *******
Malgré pas mal d'efforts, je n'ai pas réussi à manipuler la fenêtre ListView des raccourcis du bureau :'( (voir http://www.cppfrance.com/code.aspx?ID=31719).
Malg ré tout je vous propose de changer la couleur du fond d'écran du bureau afin que ça ne gâche pas trop l'effet désiré (effet de transparence).
Par chance ma vidéo choisie est plutôt à tendance noir ^^ !
L'API à utiliser est SetSysColors et le paramètre à changer est COLOR_BACKGROUND;
****************************** ********************
4-Conclusion
*************** ***********************************
Ca a beau n'être qu'un gadget complètement inutile, vous rendrez fou de jalousie vos collègues en mettant une vidéo de l'aquarium 2000 ;). Je déconseille les vidéos "rapide", ou psychédéliques pour les épileptiques !
Il est bien entendu possible de changer index.html et de mettre une animation flash pourquoi pas, voir une vraie page HTML !
Bon amusement, et étonnez vos proches avec votre bureau vivant ;o)
******************************************** ******
5-Désinstallation
************************ **************************
Pour enlever tout ce bazar, allez dans :
Propriété d'affichage->Bureau->Personnalisation
et supprimez (ou décochez ^^ ?) la barre "Poppyto Vidéo Desktop"