NotifyIcon ( nouvelle lib )

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

NotifyIcon ( nouvelle lib )

Message 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()
Image
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

trop fort comment tu crée une librairie ?

j'ai plein d'idée mais je suis comprend rien
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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...
Image
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message 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) ?
Pingtix
Messages : 159
Inscription : mer. 03/nov./2004 15:30

Message 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 ?
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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:
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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
Image
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message 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
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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
Image
swolf
Messages : 40
Inscription : jeu. 11/févr./2010 21:48

Re: NotifyIcon ( nouvelle lib )

Message 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)?
Feel The Power Of PureBasic
.................................................................................................................................................................
Soyez indulgents: je debute! :)
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: NotifyIcon ( nouvelle lib )

Message 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()
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
swolf
Messages : 40
Inscription : jeu. 11/févr./2010 21:48

Re: NotifyIcon ( nouvelle lib )

Message 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?
Feel The Power Of PureBasic
.................................................................................................................................................................
Soyez indulgents: je debute! :)
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: NotifyIcon ( nouvelle lib )

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre