我遇到了zroya,它是windows10通知的包装器。我注意到它还为每个新通知创建了一个空托盘图标,所以我尝试将它与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
)下运行。我检查了ID的l_param
值和win32con
,发现这种方式触发的事件只与绘制矩形有关,因此无法运行任何回调函数。你知道吗
我主要是通过试验和错误来实现这一点,因为这两段代码非常相似,而且我不熟悉windowsapi,但这段代码让我很困惑。我不建议你看起来一团糟,但这是我的merge attempt的当前阶段。回调正在工作,但只与单独的托盘图标。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐