Page 1 sur 2

Probléme Droopy lib - SysTrayIconBalloon

Publié : dim. 21/févr./2016 11:52
par JohnJohnsonSHERMAN
Coucou tout l'monde!
J'ai installé hier la Droopy lib, et j'ai pu m'amuser avec pas mal de truc sauf celui qui m'était le plus utile :cry: SysTrayIconBalloon , qui affiche un ballon de notification au dessus d'une icone dans la zone systray... PB reconnait la fonction (j'ai l'auto complétion et tout) mais le linker plante a la compilation.
Il suffit de mettre SysTrayIconBalloon en commentaire et tout marche :twisted:

Ex : avec l'exemple de droopy
Image

Que faire ?

Re: Probléme Droopy lib - SysTrayIconBalloon

Publié : dim. 21/févr./2016 12:50
par Ar-S
Montre la source de la fonction stp.

Re: Probléme Droopy lib - SysTrayIconBalloon

Publié : dim. 21/févr./2016 13:35
par Ar-S
C'est ce que je voulais vérifier en voyant la proce :wink:

Re: Probléme Droopy lib - SysTrayIconBalloon

Publié : dim. 21/févr./2016 14:18
par JohnJohnsonSHERMAN
Non ca ne vient pas des API : la fontion SetWindowTransparency, qui utilise SetWindowLong_() fonctionne parfaitement, je lutilise dans ma derniére version de Sherplay sans probléme... de toute facon, comme c´est une lib compilée ca ne devrai pas poser de probléme non?
Je me demande si ca ne viendrait pas de ma version de pb (la 5.41) alors que la Droopy lib a été faite sous la 5.20 ?
Il y a un tas d´autres fonctions qui font la meme erreur, comme toutes celles qui examinent l´utilisateur en cours ou le nom de l´ordi... c´est dommage, y´a moyen de faire plein de trucs avec la droopy lib quand ca marche :(

Re: Probléme Droopy lib - SysTrayIconBalloon

Publié : dim. 21/févr./2016 14:24
par Ar-S
Je vais me répéter mais montre la source de la fonction stp. on pourra au moins la tester avec une version complète de pb..

Re: Probléme Droopy lib - SysTrayIconBalloon

Publié : dim. 21/févr./2016 14:38
par Ar-S
Je l'ai testé..

Code : Tout sélectionner

Structure NOTIFYICONDATA_
  cbSize.l
  CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
    PB_Alignment1.b[4]
  CompilerEndIf
  hWnd.I
  uId.l
  uFlags.l
  uCallbackMessage.l
  CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
    PB_Alignment2.b[4]
  CompilerEndIf
  hIcon.I
  StructureUnion
    szTip.s{64}
    szTipEx.s{128}
  EndStructureUnion
  dwState.l
  dwStateMask.l
  szInfo.s{256}
  StructureUnion
    uTimeout.l
    uVersion.l
  EndStructureUnion
  szInfoTitle.s{64}
  dwInfoFlags.l
  guidItem.GUID
  hBalloonIcon.I
EndStructure 

Procedure SysTrayIconBalloon(uId, hWindow, Title$, message$, TimeOut, flags) ;+++
  ;/// Show a Systray Balloon
  ;/// Icon can be #NIIF_NONE #NIIF_INFO #NIIF_WARNING #NIIF_ERROR
  
  Shared nId.NOTIFYICONDATA_
  If OSVersion() >= #PB_OS_Windows_Vista
    nId\cbSize = SizeOf(NOTIFYICONDATA_)
  ElseIf OSVersion() >= #PB_OS_Windows_XP
    nId\cbSize = #NOTIFYICONDATA_V3_SIZE
  ElseIf OSVersion() >= #PB_OS_Windows_2000
    nId\cbSize = #NOTIFYICONDATA_V2_SIZE
  Else
    nId\cbSize = #NOTIFYICONDATA_V1_SIZE
  EndIf
  If nId\cbSize
    nId\uId         = uId
    nId\hWnd        = hWindow
    nId\szInfoTitle = Title$
    nId\szInfo      = message$
    nId\uTimeout    = TimeOut
    nId\dwInfoFlags = flags
    nId\uFlags      = #NIF_INFO
    nId\uVersion    = #NOTIFYICON_VERSION+1
    Shell_NotifyIcon_(#NIM_SETVERSION, @nId)
    ProcedureReturn Shell_NotifyIcon_(#NIM_MODIFY, @nId)
  EndIf
  ProcedureReturn #False
EndProcedure

;&&&1 SysTrayIconBalloonHide
Procedure SysTrayIconBalloonHide() ;+++
  ;/// Hide the systray ballon
  
  Shared nId.NOTIFYICONDATA_
  PokeS(@nId\szInfo,"",0)
  Shell_NotifyIcon_(#NIM_MODIFY, @nId)
  
EndProcedure



OpenWindow(0,#PB_Ignore,#PB_Ignore,200,50,"BalloonTip",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(0,10,10,180,20,"SysTrayIconBalloon",#PB_Button_Toggle)
AddSysTrayIcon(0, WindowID(0), ExtractIcon_(0,"explorer.exe",3))
SetGadgetState(0,#False)

Repeat
  evt=WaitWindowEvent()
  If evt=#PB_Event_Gadget And EventGadget()=0 And EventType()=#PB_EventType_LeftClick
    If GetGadgetState(0)=0
      SysTrayIconBalloonHide()
    Else
      SysTrayIconBalloon(0, WindowID(0),"BalloonTip !","Icon "+Str(i),100,i)
      i+1
      If i=7 : i=0 : EndIf
    EndIf
  EndIf
Until evt=#PB_Event_CloseWindow


Je pense cependant que la droopy lib n'est plus à jour car il y a au moins 3 fonctions à commenter pour l'executer en 5.41.
Enfin je n'ai pas de message d'erreur mais pas d'infobulle non plus (sous W10 x64 PB5.41x86)

Re: Probléme Droopy lib - SysTrayIconBalloon

Publié : dim. 21/févr./2016 15:29
par JohnJohnsonSHERMAN
Tu as bien cliqué sur le bouton ? (Je pense que oui mais il ne faut rien négliger quand on cherche une solution)

Dans les paramétres du systray : afficher l´icone et les notifications
Je vais de mon coté réessayer avec la version 5.20 de PB, voir si ca change quelquechose, je te tiens au courant.

Ce serait quand meme dommage que cette fonctin ne marche plus sans raison apparente...

Re: Probléme Droopy lib - SysTrayIconBalloon

Publié : lun. 22/févr./2016 9:25
par Droopy
Bonjour,

je viens de tester l'exemple avec PB 5.40LTS x86 et 5.41LTS x86 et il fonctionne (après avoir mis en commentaire les fonctions MD5FileFingerprint CRC32FileFingerprint, car ces fonctions sont remplacées par FileFingerprint)

Essaye de ne pas compiler en unicode peut être.

Re: Probléme Droopy lib - SysTrayIconBalloon

Publié : lun. 22/févr./2016 11:56
par Ar-S
et bien le code ci dessus extrait de la lib via hmod ne marche tours pas sous mon pc, unicode decoché.

Re: Probléme Droopy lib - SysTrayIconBalloon

Publié : mar. 23/févr./2016 10:13
par Droopy
testé sur Windows 10, ça fonctionne chez moi.

Re: Probléme Droopy lib - SysTrayIconBalloon

Publié : mar. 23/févr./2016 11:15
par Ar-S
Bizarroïde tout ça. Si ça marche comme ça chez vous tant mieux :wink:

Re: Probléme Droopy lib - SysTrayIconBalloon

Publié : mar. 23/févr./2016 11:24
par Marc56
Les 'Balloon tips' ne sont pas un truc fiable étant donné que certaines versions de Windows ont eut à une époque une option permettant à l'utilisateur de les désactiver.
Pour ceux qui passent d'une version à l'autre de Windows par mise à jour, ça peut ne plus fonctionner.

Voir Google avec: How do I "enable balloon tips"

:wink:

Re: Probléme Droopy lib - SysTrayIconBalloon

Publié : mar. 23/févr./2016 11:37
par Ar-S
Une solution fiable et pas trop complexe serait d'utiliser un simple popup menu.

Re: Probléme Droopy lib - SysTrayIconBalloon

Publié : mar. 23/févr./2016 11:51
par Marc56
SysTrayIconBalloon , qui affiche un ballon de notification au dessus d'une icone dans la zone systray...
Comme cette fonction Windows ne fonctionne pas ou d'une manière aléatoire, on se fait souvent sa propre fenêtre de notification.
(Ex: Thunderbird et la fenêtre de message)

J'ai réalisé dans mon application une simple procédure à laquelle je passe 2 à 3 paramètres
Texte, Couleur, [Timeout]
Si un timeout est défini, il déclenche un timer associé qui fermera la fenêtre dans le cas contraire elle reste ouverte
Dans tous les cas, un clic droit ou gauche la referme.

Ma fenêtre de bienvenue se referme au bout de 3 secondes alors que les fenêtre de fin de chrono reste (au cas où l'utilisateur ne soit pas devant l'écran à la fin du compte à rebours)

Simple logique, pas besoin de puiser dans les API

:wink:

Re: Probléme Droopy lib - SysTrayIconBalloon

Publié : mar. 23/févr./2016 13:40
par Marc56
On mélange aussi souvent le Tooltip (qui se déclenche au passage de la souris sur un élément, sans procédure particulière) et le Balloon Tooltip positionné et déclenché par le programme ou par un clic utilisateur.
Le TrayIcon's Balloon Tooltip est lui aussi déclenché par le programme. Sous Windows il 10 apparait sous la forme d'un volet et non plus comme un ballon.

https://msdn.microsoft.com/en-us/librar ... 85%29.aspx

:wink: