私は通知をユーザに提供しますが、ウィンドウ付きフルスクリーンモード(ボーダレス)では表示されないようです。フルスクリーンで動作するとは思っていませんが、ボーダーレスで見せるべきだと思いました。Python - 境界線のないウィンドウでWindowsトースト通知を表示
私はplyer、win10toast、notifuを試しましたが、最終的にはすべてShell_NotifyIconまたはIUserNotificationを使用して、そのモードで通知を表示できません。
私は見つけた別のスニペットに基づいているこのスニペットで遊んできましたが、ダイスはありません。
import win32api, win32con, win32gui
import time
class Taskbar:
def __init__(self):
self.visible = 0
message_map = {
win32con.WM_DESTROY: self.onDestroy,
}
# Register the Window class.
wc = win32gui.WNDCLASS()
hinst = wc.hInstance = win32api.GetModuleHandle(None)
wc.lpszClassName = "PythonTaskbar"
wc.lpfnWndProc = message_map
classAtom = win32gui.RegisterClass(wc)
# Create the Window.
style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
exStyle = win32con.WS_EX_TOPMOST # win32con.WS_EX_TOOLWINDOW | win32con.WS_EX_TOPMOST #| win32con.WS_EX_NOACTIVATE
self.hwnd = win32gui.CreateWindowEx(exStyle, classAtom, "Taskbar Demo", style, \
0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, \
0, 0, hinst, None)
win32gui.UpdateWindow(self.hwnd)
icon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION)
self.setIcon(icon)
self.show()
def setIcon(self, hicon, tooltip=None):
self.hicon = hicon
self.tooltip = tooltip
def showBaloon(self):
flags = win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_INFO
nid = (self.hwnd, 0, flags, win32con.WM_USER + 20, self.hicon, "", "Balloon Message", 10, "Balloon",
win32gui.NIIF_INFO)
win32gui.Shell_NotifyIcon(win32gui.NIM_MODIFY, nid)
def show(self):
"""Display the taskbar icon"""
flags = win32gui.NIF_ICON | win32gui.NIF_MESSAGE
if self.tooltip is not None:
flags |= win32gui.NIF_TIP
nid = (self.hwnd, 0, flags, win32con.WM_USER + 20, self.hicon, self.tooltip)
else:
nid = (self.hwnd, 0, flags, win32con.WM_USER + 20, self.hicon)
if self.visible:
self.hide()
win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, nid)
self.visible = 1
def hide(self):
"""Hide the taskbar icon"""
if self.visible:
nid = (self.hwnd, 0)
win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid)
self.visible = 0
def onDestroy(self, hwnd, msg, wparam, lparam):
self.hide()
win32gui.PostQuitMessage(0) # Terminate the app.
t = Taskbar()
time.sleep(3)
t.showBaloon()
time.sleep(3)
私は、通知ウィンドウ(すなわちWS_EX_TOPMOST、WS_EX_TOOLWINDOW、WS_EX_NOACTIVATE)に別の拡張ウィンドウスタイルを使用してみましたが、何の影響も与えていないようです。
通知でこれを行う方法はありますか?フルスクリーンモードではないので、簡単に表示してはいけませんか?