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