我正在使用win10toast使Windows弹出通知。有什么方法可以使通知保持静音?换句话说,我可以为正在创建的通知禁用声音吗?我可以改变声音吗?
编辑:添加了示例代码
我的示例代码:
from win10toast import ToastNotifier
toaster = ToastNotifier()
for i in range(0,70000000):
pass
toaster.show_toast("Hey User",
"The program is running pretty well. You should try to disable audio on me next though!",
icon_path=None,
duration=5)
答案 0 :(得分:0)
您必须修改库的源代码才能执行此操作。转到安装库的文件夹,然后打开“ __init__.py”文件。在顶部,在所有“ win32gui”导入文件放入后,写from win32gui import NIIF_NOSOUND
。
此后,转到第107行,您应该看到这段代码:
Shell_NotifyIcon(NIM_MODIFY, (self.hwnd, 0, NIF_INFO,
WM_USER + 20,
hicon, "Balloon Tooltip", msg, 200,
title))
在“ title”参数之后,放置“ NIIF_NOSOUND”,它应如下所示:
Shell_NotifyIcon(NIM_MODIFY, (self.hwnd, 0, NIF_INFO,
WM_USER + 20,
hicon, "Balloon Tooltip", msg, 200,
title, NIIF_NOSOUND))
如果要执行此操作,则必须进一步修改源代码,可以为show_toast
方法添加新参数。像这样:
# line 121
def show_toast(self, title="Notification", msg="Here comes the message",
icon_path=None, duration=5, threaded=False, sound=False):
并进一步发送“ sound”参数:
# line 130
if not threaded:
self._show_toast(title, msg, icon_path, duration, sound)
else:
if self.notification_active():
# We have an active notification, let is finish so we don't spam them
return False
self._thread = threading.Thread(target=self._show_toast, args=(title, msg, icon_path, duration, sound))
self._thread.start()
return True
然后还将参数添加到“隐藏” _show_toast
方法中:
# line 63
def _show_toast(self, title, msg,
icon_path, duration, sound):
并通过if else语句检查是否应添加“ NIIF_NOSOUND”标志:
# line 107
Shell_NotifyIcon(NIM_ADD, nid)
data = (self.hwnd, 0, NIF_INFO,
WM_USER + 20,
hicon, "Balloon Tooltip", msg, 200,
title)
if not sound:
data = data + (NIIF_NOSOUND,)
Shell_NotifyIcon(NIM_MODIFY, data)
该参数需要结合InfoFlags来修改通知的行为和外观。详细了解NIIF_NOSOUND标志和其他标志。在这里,您可以查看“ pywin32” pywin32 documentation中哪些“ NIIF”标志可用。
您可以在pywin32 Shell_NotifyIcon处查看有关Shell_NotifyIcon
函数的参数的更多信息。
Shell_NotifyIcon
函数的第二个参数是一个元组
代表采用不同参数的“ PyNOTIFYICONDATA”对象,您可以在pywin32 PyNOTIFYICONDATA 处了解有关此对象的更多信息。
注意:这在Windows 10上对我有用。