Because it is a script that will run in Windows, the function can be used Shell_NotifyIcon
to show the popup.
Example:
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 # Também poderia especificar uma wndproc.
classAtom = RegisterClass(wc)
# Criar a Janela.
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)
def balloon_tip(title, msg):
w=WindowsBalloonTip(title, msg)
if __name__ == '__main__':
balloon_tip("Título para o pop-up", "Corpo da mensagem aqui!")
Fonte
Regarding key capture, you can use the PyHook
, is a wrapper which allows the technique of Hooking through a script in Python, in addition to being able to manipulate keyboard events, you can change the behavior of mouse events.
The example below captures keystrokes and prints on screen.
#!/usr/bin/python
import pyHook
import pythoncom
def OnKeyboardEvent(event):
print event.Ascii
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
while True:
pythoncom.PumpMessages()
To close simply press the keys CTRL + C.
Search for "python desktop notification". In that question from Soen, for example, there are some options - among them a multi-platform which seems very simple (uses the
wx
which, if I’m not mistaken, is included in Python). I’ve never used it myself, so I wouldn’t know if it’s good or not.– mgibsonbr
By the way, here at Stackoverflow we don’t usually use greetings and thanks in the questions, hence the suggested edition. See that post on meta for more details. P.S. One thing is unclear in your question: is it just user notifications that you’re interested in, or is there more? (e.g.: API calls, registry manipulation, COM, MFC...) " Windows events" seems to me a little too generic, could you please edit your question by putting more details?
– mgibsonbr
Okay, sorry for the inconvenience. I added more details to my question.
– user3266489