Problèmes avec systray en vb2005

Résolu
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 - 23 nov. 2005 à 17:09
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 - 23 nov. 2005 à 21:13
Bonjour,

je viens de passer à VB2005 (à mon avis ceux qui utilisent .NET peuvent
très bien me répondre, vb6 pas vu la nature de mon problème...)

Je voudrais créer un prog avec notamment une icone dans la barre
systray. J'ai copié collé un code sample tout fait pour ça (sans doute
téléchargé à la base sur vbFrance ou chez microsoft...), je l'ai à
peine modifié (des bêtises comme Type -> Structure, ou Me.hwnd ->
Me.Handle.ToInt64) et il me fait une erreur sur
"Shell_NotifyIcon(NIM_ADD, Nid)", AccessViolationUnhandled... Voilà le
code exact :



Public Class Form1

Public Structure NOTIFYICONDATA

Dim cbSize As Long

Dim hwnd As Long

Dim uId As Long

Dim uFlags As Long

Dim uCallBackMessage As Long

Dim hIcon As Long

Dim szTip As String

End Structure



Public Const NIM_ADD = &H0

Public Const NIM_MODIFY = &H1

Public Const NIM_DELETE = &H2

Public Const NIF_MESSAGE = &H1

Public Const NIF_ICON = &H2

Public Const NIF_TIP = &H4

Public Const WM_MOUSEMOVE = &H200

Public Const WM_LBUTTONDOWN = &H201 'Button down

Public Const WM_LBUTTONUP = &H202 'Button up

Public Const WM_LBUTTONDBLCLK = &H203 'Double-click

Public Const WM_RBUTTONDOWN = &H204 'Button down

Public Const WM_RBUTTONUP = &H205 'Button up

Public Const WM_RBUTTONDBLCLK = &H206 'Double-click



Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

Public Declare Function Shell_NotifyIcon Lib
"shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, ByVal
pnid As NOTIFYICONDATA) As Boolean

Public Declare Function SystemParametersInfo Lib
"user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal
uParam As Long, ByRef lpvParam As Long, ByVal fuWinIni As Long) As Long



Dim Nid As NOTIFYICONDATA



Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

With Nid

.cbSize = Len(Nid)

.hwnd = Me.Handle.ToInt64

.uId = vbNull

.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE

.uCallBackMessage = WM_MOUSEMOVE


.hIcon = System.Drawing.Icon.ExtractAssociatedIcon("c:\temp.bmp").Handle

.szTip = "Gowap" & vbNullChar

End With

End Sub



Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown

Shell_NotifyIcon(NIM_ADD, Nid)

End Sub

End Class



Voila, voila... Merci pour votre aide...



Julien

3 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 nov. 2005 à 17:34
Utilises donc un contrôle "NotifyIcon" ...
3
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
23 nov. 2005 à 17:11
Petit détail : le code fonctionne impec sous vb6
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
23 nov. 2005 à 21:13
Ho merci, je l'avais pas vu celui-là
0
Rejoignez-nous