Page 1 sur 1
[OK] Systray sans fenêtre ?
Publié : sam. 10/août/2013 14:10
par Ar-S
Salutation.
Est-il possible de créer un systray avec popup menu sans avoir à créer une fenêtre ou est-on obligé de créer une fenêtre invisible (ce que je trouve dommage) ?
Re: Systray sans fenêtre ?
Publié : sam. 10/août/2013 14:25
par Fred
La fenetre est obligatoire pour gerer l'evenement.
Re: Systray sans fenêtre ?
Publié : sam. 10/août/2013 15:25
par Ar-S
Ok, merci.
Re: [OK] Systray sans fenêtre ?
Publié : sam. 10/août/2013 19:01
par falsam
Bonjour Ar-s. Petite astuce en utilisant le DeskTop comme handle de fenêtre.
A prioris on ne peut pas mettre de menu mais on peut tester des touches dont le traitement s'effectue dans un thread.
Tu peux tester les touches :
- F8 qui agit comme un interrupteur On Off.
- F10 qui fait rien :p
- F12 qui permet de fermer ce process
Code : Tout sélectionner
Global Status.b, EndSystray.b
Procedure WaitKey(*Value)
Repeat
If GetAsyncKeyState_(#VK_F8) & $1
If Status = #False
Status = #True
Debug "True"
Else
Status = #False
Debug "False"
EndIf
EndIf
If GetAsyncKeyState_(#VK_F10) & $1
Debug "Touche F10"
EndIf
If GetAsyncKeyState_(#VK_F12) & $1
Debug "C'est fini"
EndSystray = #True
EndIf
ForEver
EndProcedure
WindowID = GetDesktopWindow_()
SysTray = AddSysTrayIcon(#PB_Any, WindowID, LoadIcon_( 0, #IDI_EXCLAMATION ) );
SysTrayIconToolTip(SysTray, "Presser la touche F12" +#CRLF$+ "pour quitter le systray")
;Créé un thread tournant en arrière plan de l'application
CreateThread(@WaitKey(), #Null)
Repeat : Until EndSysTray
Re: [OK] Systray sans fenêtre ?
Publié : sam. 10/août/2013 19:05
par Ar-S
Merci pour le complément

Re: [OK] Systray sans fenêtre ?
Publié : sam. 10/août/2013 19:28
par falsam
le code minimum
Code : Tout sélectionner
WindowID = GetDesktopWindow_()
SysTray = AddSysTrayIcon(#PB_Any, WindowID, LoadIcon_( 0, #IDI_EXCLAMATION ) );
SysTrayIconToolTip(SysTray, "Presser la touche F12" +#CRLF$+ "pour quitter le systray")
Repeat
Until GetAsyncKeyState_(#VK_F12) & $1