Jump to content
Fivewin Brasil

Exibir Notificação ao usuario em App rodando no TRAY do windows


marcioe

Recommended Posts

Tenho um sistema de verificação de pedidos (que roda no Tray do Windows (Junto ao Relogio), onde o banco fica hospedado, até funciona bem.

Porem gostaria de que fosse exibido ao receber um novo pedido uma Notificação, para o usuario, quando chegasse um novo pedido.

Poderia ser um Balão, etc... qualquer forma de avisar ao operador

 

AAAAAAAAAAAAAAAAAA.jpg?1584389649

No caso em especial é esse ai que roda no Relógio do windows

Alguma coisa tipo essa 
notifyicon-04.png

Ou essa ai....

3839749a-9eba-4aa2-a7f0-d73c5d15f73a

Link to comment
Share on other sites

Boa tarde,

 

teste com esta função e ajuste para o que precisa:

FUNCTION ShowMsgTray(cMsg, cTit)
   SysRefresh()
   IF cMsg == NIL .OR. cTit == NIL
      c = GetNotifyIconData( oTray:oWnd:hWnd, 1, WM_TASKBAR, oTray:oIcon:hIcon, "", "")
      Shell_NotifyIcon( 1, c )
   ELSE
      c = GetNotifyIconData( oTray:oWnd:hWnd, 1, WM_TASKBAR, oTray:oIcon:hIcon, cMsg, cTit )
      Shell_NotifyIcon( 0, @c )
      Shell_NotifyIcon( 1, c )
   ENDIF
   oTray:Refresh()
RETURN NIL

 

Abraço

João Alpande

Link to comment
Share on other sites

  • 4 months later...

Boa tarde,

Tem de alterar a classe ttray   \source\ttray.prg  colocar NIIF_NOSOUND :

nid.dwInfoFlags = NIIF_INFO | NIIF_NOSOUND;

//----------------------------------------------------------------------------//

#pragma BEGINDUMP

#include <hbapi.h>
#define _WIN32_IE 0x0501
#include <windows.h>

#ifndef NIF_INFO
   #define NIF_INFO        0x00000010
   #define NIIF_INFO       0x00000001
#endif

HB_FUNC( GETNOTIFYICONDATA )
{
   NOTIFYICONDATAA nid;

   memset( &nid, 0, sizeof( NOTIFYICONDATA ) );

   nid.cbSize = sizeof( NOTIFYICONDATA );
   #ifndef _WIN64
      nid.hWnd   = ( HWND ) hb_parnl( 1 );
   #else
      nid.hWnd   = ( HWND ) hb_parnll( 1 );
   #endif
   nid.uID    = ( UINT ) hb_parnl( 2 );
   nid.uFlags = NIF_INFO | NIF_MESSAGE | NIF_ICON | NIF_TIP ;
   nid.dwInfoFlags = NIIF_INFO | NIIF_NOSOUND;
   nid.uCallbackMessage = ( UINT ) hb_parnl( 3 );
   #ifndef _WIN64
      nid.hIcon  = ( HICON ) hb_parnl( 4 );
   #else
      nid.hIcon  = ( HICON ) hb_parnll( 4 );
   #endif
   strcpy( nid.szTip, hb_parc( 5 ) );
   strcpy( nid.szInfo, hb_parc( 5 ) );
   strcpy( nid.szInfoTitle, hb_parc( 6 ) );

   hb_retclen( ( char * ) &nid, sizeof( NOTIFYICONDATA ) );
}

#pragma ENDDUMP

 

 

 

Link to comment
Share on other sites

Em 08/08/2020 at 13:20, joao disse:

#ifndef NIF_INFO

#define NIF_INFO 0x00000010

#define NIIF_INFO 0x00000001

#endif

Fiz uma inclusão para funcionar para mim:

#ifndef NIF_INFO
   #define NIF_INFO        0x00000010
   #define NIIF_INFO       0x00000001
#endif
#ifndef NIIF_NOSOUND
   #define NIIF_NOSOUND    0x00000010
#endif

 

Link to comment
Share on other sites

boa tarde meu caro @marcioe, vc ainda tem essa rotina de exibir msg no tray? ainda utiliza? Como minha esposa fala o não vc ja tem... então la vai... será que você poderia compartilhar a tua rotina? estou precisando de algo bem parecido com isso... Desde já meu muito obrigado!!!

se quiser me enviar o email é : ronecoura@gmail.com...

 

Link to comment
Share on other sites

Amiguinhos,

 

Theotokos, não querendo tirar o mérito da resposta do marcioe devo informá-lo que a implementação é rápida e indolor( igual a aplicação de Ozônio ).

Basta usar em qualquer parte do seu programa a função FUNCTION ShowMsgTray(cMsg, cTit):

...
   nNumeroDePedidos := 3
   ShowMsgTray( "Chegaram "+strZero(nNumeroDePedidos,2)+" pedidos", "Chegada de Pedidos" )
...

Ainda terá de incluir o trecho em algum .PRG de funções do seu ambiente.

#pragma BEGINDUMP

#include <hbapi.h>
#define _WIN32_IE 0x0501
#include <windows.h>

#ifndef NIF_INFO
   #define NIF_INFO        0x00000010
   #define NIIF_INFO       0x00000001
#endif
#ifndef NIIF_NOSOUND
   #define NIIF_NOSOUND    0x00000010
#endif

HB_FUNC( GETNOTIFYICONDATA )
{
   NOTIFYICONDATAA nid;

   memset( &nid, 0, sizeof( NOTIFYICONDATA ) );

   nid.cbSize = sizeof( NOTIFYICONDATA );
   #ifndef _WIN64
      nid.hWnd   = ( HWND ) hb_parnl( 1 );
   #else
      nid.hWnd   = ( HWND ) hb_parnll( 1 );
   #endif
   nid.uID    = ( UINT ) hb_parnl( 2 );
   nid.uFlags = NIF_INFO | NIF_MESSAGE | NIF_ICON | NIF_TIP ;
   nid.dwInfoFlags = NIIF_INFO | NIIF_NOSOUND;
   nid.uCallbackMessage = ( UINT ) hb_parnl( 3 );
   #ifndef _WIN64
      nid.hIcon  = ( HICON ) hb_parnl( 4 );
   #else
      nid.hIcon  = ( HICON ) hb_parnll( 4 );
   #endif
   strcpy( nid.szTip, hb_parc( 5 ) );
   strcpy( nid.szInfo, hb_parc( 5 ) );
   strcpy( nid.szInfoTitle, hb_parc( 6 ) );

   hb_retclen( ( char * ) &nid, sizeof( NOTIFYICONDATA ) );
}
  
#pragma ENDDUMP

 

Link to comment
Share on other sites

Em 13/08/2020 at 18:50, rochinha disse:

Fiz uma inclusão para funcionar para mim:


#ifndef NIF_INFO
   #define NIF_INFO        0x00000010
   #define NIIF_INFO       0x00000001
#endif
#ifndef NIIF_NOSOUND
   #define NIIF_NOSOUND    0x00000010
#endif

 

Boa tarde amigo, aqui funciona bem sem essa alteração, mas obrigado, abraço.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...