Actualiser le bureau

Résolu
cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010 - 28 juin 2009 à 15:26
cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010 - 28 juin 2009 à 20:22
Bonjour

Je cherche à savoir comment actualiser le bureau.

j'ai essayé avec Keyboard.Send(F5,true), mais en fait cela actualise mon programme et non l'environnement windows

Avez-vous une petite astuce à me proposer ?

merci par avance

PhilouVB

8 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
28 juin 2009 à 15:29
Salut,

J'ai cherché la même chose il n'y a pas longtemps mais sans succès... Il doit bien exister une API pour ca..?

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
28 juin 2009 à 16:04
Bon j'ai avancé un peu,

J'ai repris les réponses d'un de tes ancien post = => http://www.vbfrance.com/forum/sujet-ACTUALISER-MON-BUREAU_960570.aspx

Ce qui nous amènent au moceau de code laissé par lolokun

' actualiser Bureau
actualDesktop = "RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True"
WshShell.run actualDesktop,1,True

Il sagit bien d'une API d' User32.dll

Pour le moment je n'ai réussi à la traduire et à la faire fonctionner que sous VB6/XP32Bits

Declare Function UpdatePerUserSystemParameters Lib "User32.dll" (ByVal i As Long, ByVal b As Boolean) As long

En appelant celle-ci de cette façon :

Call UpdatePerUserSystemParameters (1, True)

Pour ce qui est de la traduction en .Net j'ai tenté :

Declare Auto Function UpdatePerUserSystemParameters Lib "User32.Dll" (ByVal i As Interger, ByVal b As Boolean) As Integer

Mais cela n'a pas l'air de fonctionner, j'ai des exceptions de première chance en sortie, les paramètres ne doivent pas correspondrent.

Je suis sous Vista x64 / Vs 2008.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
28 juin 2009 à 16:22
Re,

Je vien de tenter sans paramètres :

Private Declare Auto Sub UpdatePerUserSystemParameters Lib "User32.dll" ()
 
Call UpdatePerUserSystemParameters 

On dirait que ca fonctionne pour ce qui est du fond d'écran (mais pas pour les icones du bureau).

Cependant, cela provoque une sorte de flash noir bizard...

@+ Mayzz.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 juin 2009 à 16:24
salut,

çà me paraît un peu lourd oui ^^

il faut d'abord bloquer le bureau (sinon le refresh n'aura pas d'effet)
ensuite forcer le refresh, et enfin débloquer

je fais un petit exemple de suite


<hr size="2" width="100%" />
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
28 juin 2009 à 16:29
Arf, en fait, je viens de découvrir que ma traduction en.Net est bonne, le soucis c'est que l'API elle même ne fonctionne pas sous Vista x64 apparemment...

Quand au code plus haut il fait planté le menu démarrer.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 juin 2009 à 16:37
c'est pas très très bien ^^



<hr />
'    RAFRAICHIR LE BUREAU WINDOWS
'    http://www.codyx.org/snippet_rafraichir-bureau-windows_793.aspx#2378
'    Posté par [ PCPT ] le 28/06/2009
<hr />




    Private Const RDW_INVALIDATE As Integer = &H1
    <System.Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True)> _
    Private Shared Function GetDesktopWindow() As IntPtr
    End Function
    <System.Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True)> _
    Private Shared Function LockWindowUpdate(ByVal hwndLock As IntPtr) As Integer
    End Function
    <System.Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True)> _
    Private Shared Function RedrawWindow(ByVal hwnd As IntPtr, ByVal lprcUpdate As Integer, ByVal hrgnUpdate As Integer, ByVal fuRedraw As Integer) As Integer
    End Function

    Public Sub RefreshDesktop()
        Dim hDesk As IntPtr = GetDesktopWindow()
        LockWindowUpdate(hDesk)
        RedrawWindow(hDesk, 0, 0, RDW_INVALIDATE)
        LockWindowUpdate(False)
    End Sub









PS : comme quoi les API, c'est pratique quand même
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
28 juin 2009 à 17:00
Wahooo  PCPT ! La tu m'épate ^^

Plus serieusement bravo, très beau code, t'as tout mon respect

PS: en effet le framework a ses limites...

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
3
cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010
28 juin 2009 à 20:22
Un grand merci pour tout.
Je vais regarder de plus pret tout cela (et surtout comprendre ce code) !!

Encore merci

PhilouVB
3
Rejoignez-nous