Actualiser le bureau [Résolu]

cs_PHILOUVB 141 Messages postés mardi 18 mars 2003Date d'inscription 3 octobre 2010 Dernière intervention - 28 juin 2009 à 15:26 - Dernière réponse : cs_PHILOUVB 141 Messages postés mardi 18 mars 2003Date d'inscription 3 octobre 2010 Dernière intervention
- 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
Afficher la suite 

8 réponses

Répondre au sujet
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 28 juin 2009 à 15:29
+3
Utile
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. <
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Mayzz
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 28 juin 2009 à 16:04
+3
Utile
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. <
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Mayzz
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 28 juin 2009 à 16:22
+3
Utile
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. <
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Mayzz
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 28 juin 2009 à 16:24
+3
Utile
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%" />
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 28 juin 2009 à 16:29
+3
Utile
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. <
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Mayzz
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 28 juin 2009 à 16:37
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 28 juin 2009 à 17:00
+3
Utile
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. <
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Mayzz
cs_PHILOUVB 141 Messages postés mardi 18 mars 2003Date d'inscription 3 octobre 2010 Dernière intervention - 28 juin 2009 à 20:22
+3
Utile
Un grand merci pour tout.
Je vais regarder de plus pret tout cela (et surtout comprendre ce code) !!

Encore merci

PhilouVB
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_PHILOUVB

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.