Page 1 sur 1

NotifyIcon ( nouvelle lib )

Publié : ven. 11/mars/2005 17:03
par Flype
J'en avais besoin. Je l'ai fais.

C'est une UserLib pour Purebasic 3.93 qui affiche dans la SysTray
en bas à droite une icône et exploite jusqu'aux dernières versions de
windows ( 95+, 2000+, XP+, SP2 ) leurs fonctionnalités.

Purebasic fournit déjà un ensemble de fonctions pour la Systray ( voir la doc purebasic ).
Cette lib y ressemble beaucoup mais elle sait gérer les nouveautés des Windows les plus récents.

Pour l'instant, désolé, tout est en anglais, la doc viendra en CHM assez rapidement.

Par ailleurs, à ce stade, elle a uniquement été testée sur Windows 2000, XP, Server 2003. Certaines fonctionnalités n'existent donc que pour certaines versions, ne soyez pas trop surpris, du coup.

Vous pouvez la télécharger ici :
http://www.penguinbyte.com/apps/pbwebst ... serLib.zip

:twisted:

[EDIT]
voici la liste des fonctions :

Code : Tout sélectionner

------------------------------------------------------------
- Object:   NotifyIcon UserLibrary / SHELL_NOTIFYICON
-           
- Descr:    Set of functions for the Systray Icon
-           From the 'shellapi.h' Microsoft include file
-           
- Version:  1.0 Beta
- Date:     Mars 2005
-           
- Compil:   Compiled with Purebasic 3.93
-           Maded with TailBite 1.2 Beta 2.3
-           
- Author:   Philippe 'Flype' Carpentier
- Email:    flype@altern.org
------------------------------------------------------------

------------------------------------------------------------
**** WARNING - PLEASE READ FOLLOWING NOTES ****
------------------------------------------------------------

The help file is UNDER CONSTRUCTION.
Please, refers to the purebasic example file provided
in the archive to understand how to use this UserLibrary.

------------------------------------------------------------
FUNCTIONS FOR THE NOTIFYICON API
------------------------------------------------------------

Result.l = ni_Add(uID.l, tip.s, hIcon.l)
Result.l = ni_Remove(uID.l)

Result.l = ni_Hide(uID.l)
Result.l = ni_Show(uID.l)
Result.l = ni_Focus(uID.l)
Result.l = ni_Icon(uID.l, hIcon.l)

------------------------------------------------------------
TOOLTIP AND BALLOON ( CARTOON STYLE ) FUNCTIONS
------------------------------------------------------------

Result.l = ni_Tip(uID.l, tip.s)
Result.l = ni_Info(uID.l, title.s, info.s, Flags.l)

------------------------------------------------------------
FUNCTIONS FOR LOADING ICONS OR USING EXISTING ONES
MAKING LIFE A LITTLE BIT EASIER...
------------------------------------------------------------

hIcon.l = ni_LoadIcon(IconFileName.s)
hIcon.l = ni_ExtractIcon()
hIcon.l = ni_DefaultIcon()

hIcon.l = ni_IconWinLogo()
hIcon.l = ni_IconQuestion()
hIcon.l = ni_IconHand()
hIcon.l = ni_IconExclamation()
hIcon.l = ni_IconAsterix()
hIcon.l = ni_IconApplication()

Publié : dim. 20/mars/2005 10:25
par bernard13
trop fort comment tu crée une librairie ?

j'ai plein d'idée mais je suis comprend rien

Publié : dim. 20/mars/2005 19:35
par Flype
comment je créé une librairie ? c'est marqué là :

Code : Tout sélectionner

- Compil:   Compiled with Purebasic 3.93 
-           Maded with TailBite 1.2 Beta 2.3 
et puis le source est fournit, faut juste le compiler avec TailBite...

Publié : dim. 20/mars/2005 22:57
par Progi1984
Génial ta lib! Super utile !

Mais as tu le code pour mettre une fenetre dans le sys tray (si tu vois ce que je veux dire) ?

Publié : lun. 21/mars/2005 12:59
par Pingtix
Ca marche comment en fait ?
Quand j'essaye de mettre un icone elle disparait au bout d'une seconde...
T'as pas un petit exemple SVP ?

Publié : lun. 21/mars/2005 18:01
par Flype
oui je peux vous faire un exemple tres simple :

Code : Tout sélectionner

;- ********* EXAMPLE N°2 *********

OpenWindow(0,0,0,200,60,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"NotifyIcon Userlib")
CreateGadgetList(WindowID())

ButtonGadget( 0, 10, 10, 180, 40, "Quitter")

Icon = ni_IconApplication()

ni_Add(0,"Exemple simple",Icon)

Repeat 
  
  Select WaitWindowEvent()
      
    Case #PB_Event_CloseWindow : Break
      
    Case #PB_Event_Gadget 
      
      If EventGadgetID() = 0
        Break
      EndIf
      
  EndSelect 
  
ForEver

ni_Remove(0)

End
donc là concretement ca fait rien de plus que les fonctions de purebasic.
ca pose les 1eres bases... ( ajout / suppression de l'icone dans la systray ). :wink:

Publié : lun. 21/mars/2005 18:05
par Flype
le meme exemple mais avec plusieurs icones :

Code : Tout sélectionner

;- ********* EXAMPLE N°3 *********

OpenWindow(0,0,0,200,60,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"NotifyIcon Userlib")
CreateGadgetList(WindowID())

ButtonGadget( 0, 10, 10, 180, 40, "Quitter")

ni_Add(0,"Icone n°1", ni_IconApplication())
ni_Add(1,"Icone n°2", ni_IconAsterisk())
ni_Add(2,"Icone n°3", ni_IconHand())

Repeat 
  
  Select WaitWindowEvent()
      
    Case #PB_Event_CloseWindow : Break
      
    Case #PB_Event_Gadget 
      
      If EventGadgetID() = 0
        Break
      EndIf
      
  EndSelect 
  
ForEver

ni_Remove(0)
ni_Remove(1)
ni_Remove(2)

End

Publié : lun. 21/mars/2005 18:10
par Progi1984
Flype a écrit :le meme exemple mais avec plusieurs icones :

Code : Tout sélectionner

;- ********* EXAMPLE N°3 *********

OpenWindow(0,0,0,200,60,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"NotifyIcon Userlib")
CreateGadgetList(WindowID())

ButtonGadget( 0, 10, 10, 180, 40, "Quitter")

ni_Add(0,"Icone n°1", ni_IconApplication())
ni_Add(1,"Icone n°2", ni_IconAsterisk())
ni_Add(2,"Icone n°3", ni_IconHand())

Repeat 
  
  Select WaitWindowEvent()
      
    Case #PB_Event_CloseWindow : Break
      
    Case #PB_Event_Gadget 
      
      If EventGadgetID() = 0
        Break
      EndIf
      
  EndSelect 
  
ForEver

ni_Remove(0)
ni_Remove(1)
ni_Remove(2)

End
A remplacer par ca :
Flype a écrit :

Code : Tout sélectionner

;- ********* EXAMPLE N°3 *********

OpenWindow(0,0,0,200,60,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"NotifyIcon Userlib")
CreateGadgetList(WindowID())

ButtonGadget( 0, 10, 10, 180, 40, "Quitter")

ni_Add(0,"Icone n°1", ni_IconApplication())
ni_Add(1,"Icone n°2", ni_IconAsterix())
ni_Add(2,"Icone n°3", ni_IconHand())

Repeat 
  
  Select WaitWindowEvent()
      
    Case #PB_Event_CloseWindow : Break
      
    Case #PB_Event_Gadget 
      
      If EventGadgetID() = 0
        Break
      EndIf
      
  EndSelect 
  
ForEver

ni_Remove(0)
ni_Remove(1)
ni_Remove(2)

End

Publié : lun. 21/mars/2005 18:21
par Flype
oui pardon j'ai pas tout à fait la meme version que vous pour mes tests...

IconAsterix() est une faute, en fait selon microsoft c'est IconAsterisk() mais vu que je suis un gaulois je m'etais planté de syntaxe :D

Re: NotifyIcon ( nouvelle lib )

Publié : sam. 28/août/2010 18:28
par swolf
bonjour
tous les liens de telechargement de tes libs sont morts...
je sais que j'arrive un peu tard mais peut on encore les trouver quelque part (les libs)?

Re: NotifyIcon ( nouvelle lib )

Publié : sam. 28/août/2010 19:20
par Ar-S
Le post est de 2005 hein... Tu sais une lib pour 3.94 ne fonctionnera pas en 4.50, il faudra l'adapter (mais je ne l'ai pas).

As tu regardé la doc => AddSysTrayIcon()

Re: NotifyIcon ( nouvelle lib )

Publié : sam. 28/août/2010 19:35
par swolf
oui je l'ai regardée, enfait je voulais afficher une info bulle et j'ai retrouvé un exemple de flype que j'ai adapté a la v 4.50

===>

Code : Tout sélectionner

 Structure NOTIFYICONDATA2
  cbSize.l 
  hwnd.l 
  uID.l 
  uFlags.l 
  uCallbackMessage.l 
  hIcon.l 
  szTip.b[128] 
  dwState.l 
  dwStateMask.l 
  szInfo.b[256] 
  StructureUnion 
  uTimeout.l 
  uVersion.l 
  EndStructureUnion 
  szInfoTitle.b[64] 
  dwInfoFlags.l 
EndStructure 

Procedure SysTrayIconBalloon(title.s,message.s,type.l) 
  
  Balloon.NOTIFYICONDATA2
  Balloon\cbSize           = SizeOf(NOTIFYICONDATA2)
  Balloon\hwnd             = WindowID(0) 
  Balloon\uFlags           = 16 ; #NIF_INFO
  Balloon\uTimeout         = 10000
  Balloon\dwInfoFlags      = type 
  
  PokeS(@Balloon\szInfoTitle,title,63) 
  PokeS(@Balloon\szInfo,message,255) 
  
  Shell_NotifyIcon_(#NIM_MODIFY,@Balloon) 
  
EndProcedure
je n'ai pas vraiment compris comment ça marche mais j'arrive a l'utiliser et c'est l'essentiel :p
ai-je le droit de l'integrer a mon programme?

Re: NotifyIcon ( nouvelle lib )

Publié : sam. 28/août/2010 21:12
par Ar-S
Si flype l'a partagé et n'a pas précisé de ne pas l'utiliser, je ne vois pas pourquoi tu ne pourrais pas.