Tengo un conflicto usando la clase TTray ya que quiero poder enviarle un aviso de notificacion tipo Balloon Tip pero no he podido hacer que funcione.
En este link (como en muchos otros de la misma forma) explica como poder enviar los parametros para hacer el Balloon Tip, por supueso en VB pero la logica es universal.!
http://vbnet.mvps.org/index.html?code/subclass/shellnotifyballoontiptimed.htm
Lo que me da a entender que como lo he leido en este foro y en otros. no hay la necesidad de una libreria de terceros ya que el shell32 desde win2k para aca tiene estos metodos.
En el link muestra como hace el codigo de la siguiente manera
- Code: Select all Expand view RUN
Public Sub ShellTrayBalloonTipShow(hwnd As Long, _
nIconIndex As Long, _
sTitle As String, _
sMessage As String)
Dim nid As NOTIFYICONDATA
If NOTIFYICONDATA_SIZE = 0 Then SetShellVersion
With nid
.cbSize = NOTIFYICONDATA_SIZE
.hwnd = hwnd
.uID = APP_SYSTRAY_ID
.uFlags = NIF_INFO
.dwInfoFlags = nIconIndex
.szInfoTitle = sTitle & vbNullChar
.szInfo = sMessage & vbNullChar
End With
Call Shell_NotifyIcon(NIM_MODIFY, nid)
End Sub
y yo lo hice de la siguiente manera
- Code: Select all Expand view RUN
#INCLUDE "FIVEWIN.CH"
#INCLUDE "STRUCT.CH"
FUNCTION TRAYEDIT(cStr1,cStr2)
LOCAL oId,c
IF VALTYPE(oTray)="O"
STRUCT oId
MEMBER cbSize AS LONG
MEMBER hWnd AS LONG
MEMBER uID AS LONG
MEMBER uFlags AS LONG
MEMBER dwInfoFlags AS LONG
MEMBER szInfoTitle AS STRING LEN 64
MEMBER szInfo AS STRING LEN 512
ENDSTRUCT
oId:cbSize:= LEN(oId:cBuffer)
oId:hwnd:= oTray:oWnd:hWnd
oId:uID:=1
oId:uFlags:= 16
oId:dwInfoFlags:= 1
oId:szInfoTitle:= cStr1
oId:szInfo:=cStr2
//? oId:cBuffer
c:=oId:cBuffer
Shell_NotifyIcon(1,@c)
ENDIF
RETURN .T.
Los valores de uFlags y dwInfoFlags los pase de hex a dec y el uId es igual a el valor que tiene la clase TTray por defecto q es 1
Y bueno.... no hace nada. jeje.
y por supuesto !!! corriendo esto cuando mi Tray ya existe, de hecho eso si se valida porq el alert (?) si se muestra.
Si alguien puede darme una sugerencia. Gracias.!!!!