怎么搞这都有一个黑色的图标,难受
代码:
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 1
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 1
|
9
Tumblr 2021-03-01 12:25:15 +08:00
PowerShell 有个 module 叫 BurntToast,可以借鉴。
|