Hola a todos, estoy intentando hacer dos cosas:
1.- Cargar un ícono en la barra de tareas en la derecha (tray icon).
2.- Mostrar un globo junto con un mensaje (ballon notification).
Tengo el siguiente código:
main PROC
.... ; calls
call START_TRAY_ICON
... ; calls
main ENDP
START_TRAY_ICON PROC
mov struct_icon.cbSize,SIZEOF NOTIFYICONDATA ; Tamaño de la structura (SIZEOF)
mov eax,[hdl_proc_name] ; manejador (handler) del proceso
mov struct_icon.hwnd,eax ; Manejador (Handle) de la ventana que recibirá la notificacion cuando ocurran eventos de ratón sobre el icono de la bandeja
mov struct_icon.uID,ID_ICON ; La constante que es usada como identificador del icono (sirve para chequear desde qué icono de bandeja proviene la notificación)
mov struct_icon.uFlags,NIF_TIP+NIF_ICON+NIF_INFO ; Especifica qué miembros son válidos
mov struct_icon.uCallbackMessage,WM_SHELLNOTIFY ; El mensaje común que Windows mandará a la ventana especificado por el miembro hwnd cuando ocurren eventos sobre el icono de bandeja
INVOKE LoadIcon,NULL,IDI_WINLOGO
mov struct_icon.hIcon,eax
INVOKE lstrcpy,ADDR struct_icon.szTip,ADDR app_name
INVOKE Shell_NotifyIcon,NIM_ADD,ADDR struct_icon
Push TIME_ICON ; duración del globo en milisegundos
push NIIF_INFO ; icono alerta
push OFFSET error1_title ; titulo
push OFFSET error1 ; mensaje
call TRAY_ICON
ret
START_TRAY_ICON ENDP
TRAY_ICON PROC
; aquí debería mostrar el mensaje
push ebp
mov ebp,esp
mov eax,[ebp+8h]
INVOKE lstrcpy,ADDR struct_icon.szInfo, eax
mov eax,[ebp+0ch]
INVOKE lstrcpy,ADDR struct_icon.szInfoTitle, eax
mov eax,[ebp+10h]
mov struct_icon.dwInfoFlags,eax
mov eax,[ebp+14h]
mov struct_icon.uTimeout,eax
INVOKE Shell_NotifyIcon,NIM_MODIFY,ADDR struct_icon
pop ebp
ret 10h
TRAY_ICON ENDP
Lo estoy haciendo en APP:Console MASM
a ver si me pueden guiar, saludos