IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

[C/C++]Rafraichir le bureau (plus précisément le fond d'écran)


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut [C/C++]Rafraichir le bureau (plus précisément le fond d'écran)
    Bonjour @ Tous !

    Voilà, j'ai fait (juste pour le fun, je sais ça existe déjà ) un petit programme qui me change le fond d'écran automatiquement toutes les N minutes...

    ils marche très bien, à cela qu'il me faut faire un F5 sur le bureau pour voir le fond d'écran changer...

    j'aimerais savoir comment je peux faire pour que ce soit fait automatiquement...

    j'ai cherché des infos via google, mais je n'ai rien trouvé de vraiment concluant...

    Merci d'Avance !
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  2. #2
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Bonjour,

    Je suppose que tu passes par SystemParamterInfo, as-tu essayé d'envoyer SPIF_SENDCHANGE dans le param fWinIni ?

    fWinIni
    [in] If a system parameter is being set, specifies whether the user profile is to be updated, and if so, whether the WM_SETTINGCHANGE message is to be broadcast to all top-level windows to notify them of the change.
    This parameter can be zero if you don't want to update the user profile or broadcast the WM_SETTINGCHANGE message, or it can be one or more of the following values.


    Sinon tu peux toujours redessinner le desktop avec un UpdateWindow() ou un RedrawWindow() ...

  3. #3
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    heu...

    tu pourrais être un peu plus précis ? c'est la première fois que j'utilise l'API Windows, et je suis absoluement pas familié avec les différentes fonctions
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  4. #4
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Désolé pour le raccourci...

    Je supposais que tu utilisais l'API SysParameterInfo() qui permet notamment de changer le WallPaper du desktop, il est possible que tu ais utilisé une autre possibilité. Il me semble que cette API redessine le desktop d'elle-même.

    Dans tous les cas tu peux tenter d'utiliser les APIs UpdateWindow() ou RedrawWindow() pour mettre à jour le desktop. Pur ces APIs tu aura besoin du HWND du desktop, pour cela tu peux le retrouver avec FindWindow().

    J'epsère que c'est un peu plus clair

  5. #5
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Merci beaucoup pour ces infos, non, je n'utilise pas SysParameterInfo, j'ai simplement pris un fichier dans lequel je copie directement le contenu du Wall à afficher (je me suis aperçu en testant différents logiciels qui le faisaient déjà justement que le changement automatique via la BdR pouvait causer des bugs d'affichage, contrairement à cette méthode )

    je vais me renseigner dans la MSDN pour trouver ces fonction

    Je tiens au courant ici et mets le résolu dès que j'ai trouvé une solution fonctionnelle
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  6. #6
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    j'ai essayé beaucoup de chose (Progrman éventuellement ses fils et petits fils pour trouver le bon handle de windows, Desktop aussi) et en desespoire de compte, le SysParameterInfo (en précisant le chemin du nouveau fond d'écran ou en faisant la copie et en fais une mise à jour sans changer le fond d'écran)

    mais rien à faire, soit il ne recharge pas le fichier (SPI me retourne 1 [donc OK]), soit il me dit que le fichier existe déjà (erreur 183 : bah oui, logique...) ou d'autre erreur à la c**


    Je desespère... j'ai tout testé je pense...

    je viens de refaire un test avec SPI, le me renvoie 0, sauf que GetLastError() me renvoie 0 aussi et en prime il me fait sauter le fond d'écran... j'comprends plus là...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  7. #7
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    OK, ça venait des assert()... passent pas en C++ à priori XD

    alors, maintenant deux nouvelles (une bonne et une mauvaise ):

    La bonne : ça fonctionne c'est super, Medinoc ...
    La mauvaise : il y a quelques bugs que j'avais vu sur une des applications, à savoir, si par exemple, on a une selection en cours au moment du changement de Wall, les pointillés de sélection restent incrustés dans le nouveau fond jusqu'au prochain changement :'( et divers bugs si on fait un clique de souris au moment du changement de wall...

    est-ce que tu aurais une idée pour arranger cela ?
    Si non, je m'en conteterais et je marquerais :résolu:, c'est déjà super, puis les bugs c'est que de l'affichage et ça se produit pas tout le temps ^^ l'appli est pas non destinée à être diffusée largement
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Eh bien, les pointillés de sélection, malheureusement, je ne les ai jamais étudiés...
    Mais je pense que je sais pourquoi ça buggue : C'est du XOR, donc l'arrière-plan est affiché avant l'effacement...

    Ce qu'il faudrait, c'est un moyen de réafficher les pointillés immédiatement après avoir changé l'arrière-plan (et encore, il peut y avoir de méchantes "race conditions" qui peuvent faire que la solution d'un cas devient le problème de l'autre...)

    Quant à moi, j'utilisais juste ça dans un programme de choix d'arrière-plan aléatoire au démarrage. Mais depuis mon dernier format, je ne l'ai pas remis: Je garde mon arrière-plan actuel, un fan art d'El Goonish Shive...

    PS: L'assertion qui foire, apparamment, exigeait que le pointeur pointé soit NULL avant l'appel de la fonction.
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LPWSTR szWallW = NULL;
    GetUnicodeStringFromMultiByteString("Arrplan.jpg", &szWallW, CP_ACP, NULL);
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    OK, ça sert à rien de monter une usine à gaz alors, pour une utilisation personnelle, c'est parfait...

    beaucoup !
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 07/07/2009, 17h12
  2. SpagoBi et LDAP (Active Directory plus précisément)
    Par floritude dans le forum SpagoBI
    Réponses: 1
    Dernier message: 25/06/2009, 09h47
  3. Rafraichir le bureau
    Par kor6k dans le forum C++
    Réponses: 3
    Dernier message: 24/04/2006, 11h43
  4. Bureau plus grand que l'ecran
    Par taitaitai71 dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 21/04/2006, 09h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo