Bonjour a tous,

je me suis lancer dans un dévelloppement ultra "simple" pour un amis afficher l'état de sont clavier wirless sous W7.(Avec Service parametrage etc...)

Mais là problème pas de rafraichissement des icon dans le systray sauf a passer la souris sur l'icone?

je me suis dit c'est le service pas de liaison avec le bureau sous W7.
J'ai donc fait la même chose dans une application WinForm.
et bien là même Probleme.

voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Public Class Form1
    Public FlagRun As Boolean = True
    Public Tb As Short = 0
    Private Declare Function GetKeyboardState Lib "user32" (ByRef pbKeyState As Byte) As Long
 
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Juste pour affiche la fenetre de démarrage que quelques secondes
        Tb = 0
        ' un petit menu sur tous les Icone pour Fermé L'application
        Me.Num.ContextMenuStrip = Me.ContextMenu1
        Me.Maj.ContextMenuStrip = Me.ContextMenu1
        Me.Def.ContextMenuStrip = Me.ContextMenu1
        '
        Me.Num.Text = "KeysStatut 1"
        Me.Maj.Text = "KeysStatut M"
        Me.Def.Text = "KeysStatut S"
        ' J'initialise les icon de la barre de notification
        Me.Num.Icon = My.Resources.NumOn ' New Icon("NumOn.ico")
        Me.Maj.Icon = My.Resources.MajOn ' New Icon("MajOn.ico")
        Me.Def.Icon = My.Resources.DefOn 'New Icon("DefOn.ico")
        'Parametrage de mon Timer
        Me.Timer1.Interval = 1000
        Me.Timer1.Enabled = True
        Me.Timer1.Start()
    End Sub
 
    Private Sub ExistToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExistToolStripMenuItem.Click
        ' Fermeture brutale de l'appli
        Application.Exit()
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim Key(256) As Byte 'Pour GetKeyboardState
        Static Dim M, N, D As Int16 'Pour facilité le debug
        'Arret du Timer
        Timer1.[Stop]()
        'C'est le petit compteur qui ferme la fenetre aprs 4 seconde
        If Tb = 4 Then
            Me.WindowState = FormWindowState.Minimized
            Me.Hide()
            Tb += 1
        ElseIf Tb < 4 Then
            Tb += 1
        End If
        ' Lecture de l'état du Clavier
        Dim x As Long = GetKeyboardState(Key(0))
        'Gestion des icone en fonction de l'état du clavier
        If N <> Key(&H90) Then
            N = Key(&H90)
            If N = 1 Then
                Num.Icon = My.Resources.NumOn 'New Icon("NumON.ico")
                Num.ShowBalloonTip(1500, "NumLook", "ON", ToolTipIcon.Info)
            Else
                Num.Icon = My.Resources.NumOF 'New Icon("NumOF.ico")
                Num.ShowBalloonTip(1500, "NumLook", "OFF", ToolTipIcon.Info)
            End If
        End If
        If M <> Key(&H14) Then
            M = Key(&H14)
            If M = 1 Then
                Maj.Icon = My.Resources.MajOn 'New Icon("MajON.ico")
            Else
                Maj.Icon = My.Resources.MajOf 'New Icon("MajOF.ico")
            End If
        End If
        If D <> Key(&H91) Then
            D = Key(&H91)
            If D = 1 Then
                Def.Icon = My.Resources.DefOn 'New Icon("DefON.ico")
            Else
                Def.Icon = My.Resources.DefOf 'New Icon("DefOF.ico")
            End If
        End If
        'redemarage du timer
        Timer1.Start()
    End Sub
 
 
    Private Sub Form1_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
        'ja' fai cela apres avoir lu dans une discution que cela résolvait les PB de rafraichiossement des Icone mais pas chez moi
        If (Me.WindowState = FormWindowState.Minimized) Then
            Me.Hide()
            Num.Visible = True
            Maj.Visible = True
            Def.Visible = True
        End If
 
    End Sub
End Class
Il y bien sur un peut de code inutile car j'ai fait plusieur essais après avoir lu un nombre impressionnant de Discussion, FAQ et tuto

Si quelqu'un à une réponse je finirais moin bête et cela me ferais plaisir.