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

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
Ex : avec l'exemple de droopy
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

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

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"

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

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
