在python中赢取10个通知,每个通知没有新的托盘图标

时间:2018-02-19 16:44:34

标签: python notifications windows-10 pywin32

我遇到了zroya,它是Windows 10通知的包装器。我注意到它还为每个新通知创建了一个空的托盘图标,所以我一直在尝试将其与my existing tray icon code合并,希望它能解决这个问题。

不幸的是,现在我添加了基本功能,我发现它没有,并且想知道是否有人可以分享我可以做的任何提示。

我认为引起问题的代码部分就是这个,每次创建通知时都会调用它:

nid = (self.hwnd, notification_id, flags, win32con.WM_USER + 1, icon, 'Tooltip')
win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, nid)

win32gui.Shell_NotifyIcon(win32gui.NIM_MODIFY, (
    self.hwnd, notification_id, win32gui.NIF_INFO,
    win32con.WM_USER + 1,
    icon,
    'Tooltip',
    message,
    0,
    title,
    additional_flags
))

这是我创建我想要使用的实际托盘图标的方式,它非常相似,但没有传入通知ID:

flags = win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_TIP
nid = (self.hwnd, 0, flags, win32con.WM_USER + 20, hicon, self.program_name)
win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, nid)

如果我删除通知代码的前两行,并将notification_id更改为0,那么它会修复该特定问题,而不是通知事件(WM_USER+1),它在托盘图标事件(WM_USER+20)下运行。我检查了l_paramwin32con的ID,发现以这种方式触发的唯一事件是绘制矩形,所以我无法运行任何回调函数。

我主要是通过试验和错误来解决这个问题,因为两个代码都非常相似,而且我没有使用Windows API,但这一点让我感到难过。我不建议看起来像是一团糟,但这是我merge attempt的当前阶段。回调正在运行,但只能使用单独的托盘图标。

0 个答案:

没有答案