notifyicondata图标通知C
NOTIFYICONDATA icon notification c++
我有一个作为服务运行的应用程序,以及监视服务的辅助应用程序。使用NOTIFYICONDATA
在系统托盘中存在监视应用程序,该应用程序正常。
我目前正在尝试做的事情是,当应用程序通知服务停止时,我想显示一条通知(就像电池在笔记本电脑上的电池一样低)。我以本文为基础。我必须执行的功能如下:
void CALLBACK checkit( HWND hwnd, UINT umsg, UINT timerid, DWORD dwtime ) {
if ( isServiceRunning() ) {
if ( nidApp.dwInfoFlags != NIIF_NONE ) {
Log( "dwInfoFlags != NIFF_NONE" );
nidApp.dwInfoFlags = NIIF_NONE;
strcpy_s( nidApp.szInfoTitle, sizeof( nidApp.szInfoTitle ), "" );
strcpy_s( nidApp.szInfo, sizeof( nidApp.szInfoTitle ), "" );
Log( "%d", Shell_NotifyIcon( NIM_MODIFY, &nidApp ) );
}
} else {
if ( nidApp.dwInfoFlags != NIIF_WARNING ) {
Log( "dwInfoFlags != NIIF_WARNING" );
nidApp.dwInfoFlags = NIIF_WARNING;
strcpy_s( nidApp.szInfoTitle, sizeof( nidApp.szInfoTitle ), "Service Stopped" );
strcpy_s( nidApp.szInfo, sizeof( nidApp.szInfo ), "The " PROGRAM_NAME " service has been stopped. Any runs in progress have been terminated." );
nidApp.uTimeout = 10000;
Log( "%d", Shell_NotifyIcon( NIM_MODIFY, &nidApp ) );
}
}
}
此功能每五秒钟称为一次。使用日志,我可以看到dwInfoFlags
设置了正确的设置,并且Shell_NotifyIcon
返回TRUE
,但是,没有显示通知。我敢肯定,我一定会缺少一些东西,但是我无法弄清楚它是什么。
nidApp
在CPP文件的顶部定义为NOTIFYICONDATA nidApp;
,如下所示:
hMainIcon = LoadIcon( hInstance, (LPCTSTR)MAKEINTRESOURCE( IDI_ICON1 ) );
nidApp.cbSize = sizeof( NOTIFYICONDATA ); // sizeof the struct in bytes
nidApp.hWnd = (HWND)hWnd; //handle of the window which will process this app. messages
nidApp.uID = IDI_ICON1; //ID of the icon that willl appear in the system tray
nidApp.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP | NIF_GUID | NIF_SHOWTIP; //ORing of all the flags
nidApp.hIcon = hMainIcon; // handle of the Icon to be displayed, obtained from LoadIcon
nidApp.uCallbackMessage = WM_USER_SHELLICON;
nidApp.uVersion = NOTIFYICON_VERSION_4;
nidApp.guidItem = myGUID;
strcpy_s( nidApp.szTip, sizeof( nidApp.szTip ), PROGRAM_NAME " Service Controller" );
Shell_NotifyIcon( NIM_ADD, &nidApp );
Shell_NotifyIcon( NIM_SETVERSION, &nidApp );
您应该将nidApp.uFlags
设置为NIF_INFO
以显示通知。现在,您正在调用与创建通知图标相同标志的Shell_NotifyIcon
。
相关文章:
- 函数如何通知用户它基于函数原型抛出异常?
- 如何在ECS框架中更新组件数据和通知系统
- 当 I2C 值在C++中发生变化时收到通知
- 如何设计具有不同类型的通知和观察器的观察者模式?
- 当可输入框在窗口中处于活动状态时获得通知的任何方法
- 如何为 C++ Visual Studio 2019 指定应用程序图标?
- 是否有必要获取锁并在不需要唤醒线程时通知condition_variable?
- 从 wxWidgets 中的.DLL加载图标
- 如何在点击通知时捕获用户的点击操作
- 在通知提升间处理条件变量时未按住锁会导致问题
- 如何修复加载图标()函数不显示图标?
- QT Framewrok 和 Visual Studio - 图标冲突
- 通知条件变量后使用互斥锁
- 如何在 c++ 中将图标放在按钮上?
- notifyicondata图标通知C
- 清除通知托盘图标,窗口外壳
- Qt-没有托盘图标的通知,可能
- 通知图标接收WM_LBUTTONDBLCLK,但不接收WM_CONTEXTMENU
- 如何正确更新托盘通知图标
- c++事件处理点击通知区域图标Windows