-
-
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) |
Hey thanks for this gist! I used it in my backup script! https://github.com/vijayparsi/pyBackup
@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
I PEPped this up a bit and fixed the "no 2nd notification" issue that @endolith reported. It still has one issue, which is that only one notification at a time can display, so if a 2nd notification is attempted before the 1st has finished, the 2nd is ignored. https://gist.github.com/brousch/6523559