-
-
Save boppreh/4000505 to your computer and use it in GitHub Desktop.
# -- coding: utf-8 -- | |
from win32api import * | |
from win32gui import * | |
import win32con | |
import sys, os | |
import struct | |
import time | |
class WindowsBalloonTip: | |
def __init__(self, title, msg): | |
message_map = { | |
win32con.WM_DESTROY: self.OnDestroy, | |
} | |
# Register the Window class. | |
wc = WNDCLASS() | |
hinst = wc.hInstance = GetModuleHandle(None) | |
wc.lpszClassName = "PythonTaskbar" | |
wc.lpfnWndProc = message_map # could also specify a wndproc. | |
classAtom = RegisterClass(wc) | |
# Create the Window. | |
style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU | |
self.hwnd = CreateWindow( classAtom, "Taskbar", style, \ | |
0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, \ | |
0, 0, hinst, None) | |
UpdateWindow(self.hwnd) | |
iconPathName = os.path.abspath(os.path.join( sys.path[0], "balloontip.ico" )) | |
icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE | |
try: | |
hicon = LoadImage(hinst, iconPathName, \ | |
win32con.IMAGE_ICON, 0, 0, icon_flags) | |
except: | |
hicon = LoadIcon(0, win32con.IDI_APPLICATION) | |
flags = NIF_ICON | NIF_MESSAGE | NIF_TIP | |
nid = (self.hwnd, 0, flags, win32con.WM_USER+20, hicon, "tooltip") | |
Shell_NotifyIcon(NIM_ADD, nid) | |
Shell_NotifyIcon(NIM_MODIFY, \ | |
(self.hwnd, 0, NIF_INFO, win32con.WM_USER+20,\ | |
hicon, "Balloon tooltip",msg,200,title)) | |
# self.show_balloon(title, msg) | |
time.sleep(10) | |
DestroyWindow(self.hwnd) | |
def OnDestroy(self, hwnd, msg, wparam, lparam): | |
nid = (self.hwnd, 0) | |
Shell_NotifyIcon(NIM_DELETE, nid) | |
PostQuitMessage(0) # Terminate the app. | |
def balloon_tip(title, msg): | |
w=WindowsBalloonTip(title, msg) |
@brousch: dead link?
For anyone who needs a fix to @endolith's problem, after line 42 insert this code:
UnregisterClass(classAtom, hinst)
Bonjour
Merci c'est impeccable.
Hi,
Thank you, It's wonderful
Thank you @asm95!!
How to increase the display time of the balloon? It fades away after few seconds even if the script is running.
For those willing to change the time of the notification:
Go to line 41 and change time.sleep(__)
to whatever number of seconds you want.
Can anyone please tell me how to add a click bind to this notification. I want to open a website or do some task on the click and I am not able to bind it in the message map. Please help!
Never mind guys. Found it! https://github.com/jithurjacob/Windows-10-Toast-Notifications/pull/38
How do I get a notification from the site I need?
Never mind guys. Found it! https://github.com/jithurjacob/Windows-10-Toast-Notifications/pull/38
updated/Corrected link : https://github.com/jithurjacob/Windows-10-Toast-Notifications
Hey thanks for this gist! I used it in my backup script! https://github.com/vijayparsi/pyBackup