怎么搞这都有一个黑色的图标,难受
代码:
NOTIFYICONDATAW nid = {}; nid.cbSize = sizeof nid; nid.hWnd = hwnd; nid.uID = IDNI_BALLOON; nid.uFlags = NIF_INFO | NIF_MESSAGE; nid.dwInfoFlags = NIIF_INFO; lstrcpy(nid.szInfoTitle, L"气泡通知"); lstrcpy(nid.szInfo, L"这是一条气泡通知"); nid.uCallbackMessage = WM_USER; Shell_NotifyIconW(NIM_ADD, &nid);
void balloon_notification() { NOTIFYICONDATAW nid = {0}; nid.cbSize = sizeof nid; nid.hWnd = hwnd; nid.uFlags |= NIF_ICON; nid.hIcon = LoadIconA(NULL, IDI_SHIELD); nid.uFlags |= NIF_MESSAGE; nid.uCallbackMessage = WM_USER + 1; nid.uFlags |= NIF_INFO; nid.dwInfoFlags = NIIF_ICON_MASK; // 这个图标比较特殊,必须要设置hIcon才能使用 lstrcpyW(nid.szInfoTitle, L"气球通知"); lstrcpyW(nid.szInfo, L"这是一条气球通知"); SYSCALL(Shell_NotifyIconW(NIM_ADD, &nid)); // 隐藏图标 nid.uFlags |= NIF_STATE; nid.dwState = NIS_HIDDEN; // nid.dwStateMask = NIS_HIDDEN; // 隐藏进程名 SYSCALL(Shell_NotifyIconW(NIM_MODIFY, &nid)); }
![]() | 1 USAA 2021-02-26 16:46:12 +08:00 ![]() ShowBalloonTip |
![]() | 3 pkoukk 2021-02-26 17:46:01 +08:00 |
![]() | 4 lujjjh 2021-02-26 20:53:31 +08:00 Shell_NotifyIconW(NIM_ADD, &nid); Shell_NotifyIconW(NIM_DELETE, &nid); 加完就删。 但是在 Win7 上估计会比较奇怪,以前的样式是有个箭头指向通知区域图标的。 |
![]() | 6 lujjjh 2021-02-26 21:22:03 +08:00 @Kasumi20 我测试下来没有复现。如果考虑抛弃 Win7- 的话,可以用 UWP 的 API,也具备更多的能力 https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/send-local-toast-desktop-cpp-wrl 不过对 C++ 不太友好,需要自己注册 COM server |
7 ho121 2021-02-26 21:27:56 +08:00 via Android ![]() |
![]() | 9 Tumblr 2021-03-01 12:25:15 +08:00 PowerShell 有个 module 叫 BurntToast,可以借鉴。 |