用Python实现Windows上的气泡提醒
来源:互联网 发布:java完全自学视频 编辑:程序博客网 时间:2024/05/29 07:26
原文来自:http://www.3snews.net/html/50/550-20986.html
我稍微改了下而已,经试验在XP,2003下有效。
# -*- encoding: gbk -*-import sysimport osimport structimport timeimport win32confrom win32api import *# Try and use XP features, so we get alpha-blending etc.try: from winxpgui import *except ImportError: from win32gui import *class PyNOTIFYICONDATA: _struct_format = ( "I" # DWORD cbSize; 结构大小(字节) "I" # HWND hWnd; 处理消息的窗口的句柄 "I" # UINT uID; 唯一的标识符 "I" # UINT uFlags; "I" # UINT uCallbackMessage; 处理消息的窗口接收的消息 "I" # HICON hIcon; 托盘图标句柄 "128s" # TCHAR szTip[128]; 提示文本 "I" # DWORD dwState; 托盘图标状态 "I" # DWORD dwStateMask; 状态掩码 "256s" # TCHAR szInfo[256]; 气泡提示文本 "I" # union { # UINT uTimeout; 气球提示消失时间(毫秒) # UINT uVersion; 版本(0 for V4, 3 for V5) # } DUMMYUNIONNAME; "64s" # TCHAR szInfoTitle[64]; 气球提示标题 "I" # DWORD dwInfoFlags; 气球提示图标 ) _struct = struct.Struct(_struct_format) hWnd = 0 uID = 0 uFlags = 0 uCallbackMessage = 0 hIcon = 0 szTip = '' dwState = 0 dwStateMask = 0 szInfo = '' uTimeoutOrVersion = 0 szInfoTitle = '' dwInfoFlags = 0 def pack(self): return self._struct.pack( self._struct.size, self.hWnd, self.uID, self.uFlags, self.uCallbackMessage, self.hIcon, self.szTip, self.dwState, self.dwStateMask, self.szInfo, self.uTimeoutOrVersion, self.szInfoTitle, self.dwInfoFlags ) def __setattr__(self, name, value): # avoid wrong field names if not hasattr(self, name): raise NameError, name self.__dict__[name] = valueclass MainWindow: def __init__(self, title, msg, duration=3): # Register the Window class. wc = WNDCLASS() hinst = wc.hInstance = GetModuleHandle(None) wc.lpszClassName = "PythonTaskbarDemo" # 字符串只要有值即可,下面3处也一样 wc.lpfnWndProc = { win32con.WM_DESTROY: self.OnDestroy } # could also specify a wndproc. classAtom = RegisterClass(wc) # Create the Window. style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU self.hwnd = CreateWindow(classAtom, "Taskbar Demo", style, 0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, 0, 0, hinst, None ) UpdateWindow(self.hwnd) iconPathName = os.path.abspath(os.path.join(sys.prefix, "pyc.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, "Balloon tooltip demo") Shell_NotifyIcon(NIM_ADD, nid) self.show_balloon(title, msg) time.sleep(duration) DestroyWindow(self.hwnd) def show_balloon(self, title, msg): # For this message I can't use the win32gui structure because # it doesn't declare the new, required fields nid = PyNOTIFYICONDATA() nid.hWnd = self.hwnd nid.uFlags = NIF_INFO # type of balloon and text are random nid.dwInfoFlags = NIIF_INFO nid.szInfo = msg[:64] nid.szInfoTitle = title[:256] # Call the Windows function, not the wrapped one from ctypes import windll Shell_NotifyIcon = windll.shell32.Shell_NotifyIconA Shell_NotifyIcon(NIM_MODIFY, nid.pack()) def OnDestroy(self, hwnd, msg, wparam, lparam): nid = (self.hwnd, 0) Shell_NotifyIcon(NIM_DELETE, nid) PostQuitMessage(0) # Terminate the app.if __name__=='__main__': MainWindow("您有一条短消息", "您该睡觉了")
- 用Python实现Windows上的气泡提醒
- c#实现任务栏气泡提醒
- jqMobi实现计数气泡提醒
- 用Dialog实现的主动弹出式气泡
- 气泡效果的实现
- 百度地图上的气泡
- 有定时提醒功能的气泡消息框
- 用JavaScript写一个类似于windows的气泡屏保效果
- QTP实现Windows任务栏气泡提示框
- 气泡排序的java实现
- MacOS下气泡的实现
- Python:桌面气泡提示功能实现
- 用CAPI实现notes的邮件提醒
- 类似QQ拖动气泡删除消息的气泡实现
- 用VB实现托盘图标+气泡提示的效果
- jq实现鼠标放置名字上显示详细内容的气泡效果
- ItemizedOverlay的在mapview上弹出气泡
- QT 按钮上的数字气泡
- ubuntu图形界面和字符界面的切换!
- 异常处理开关:try{}catch(...){}
- ORACLE 创建表空间、创建用户 .
- 哲学中的推理规则 —— 《自然哲学之数学原理》
- 根据表名查找所在的数据库名(用游标)
- 用Python实现Windows上的气泡提醒
- Netstat命令详解 如何关闭TIME_WAIT连接 如何查看nginx的访问流量
- linux时间类驱动程序
- Android图片圆角
- http 1.1 协议错误代码解析
- Android重力感应 .
- BMP文件结构
- 利用PLSQL工具导入导出数据库 .
- Hough变换原理