wxpython windows下显示托盘区气球消息

2009-10-18 javaeye http://angeloce.iteye.com/admin/blogs/493681

 

=====================================

 

有一个小需求希望在wx下建立的托盘区图标上显示气球消息,很尴尬的是wx.TaskBarIcon不像wx.Window等有GetHandle方法,无法直接获得句柄.解决的办法

1.自己重写TaskBarIcon...

2.直接遍历找到句柄(更通用麻烦些).

#coding: cp936





import win32gui

import win32con

import time



class TestTaskbarIcon:

    def __init__(self):

        

        # 注册一个窗口类

        wc = win32gui.WNDCLASS()

        hinst = wc.hInstance = win32gui.GetModuleHandle(None)

        wc.lpszClassName = "PythonTaskbarDemo"

        wc.lpfnWndProc = {win32con.WM_DESTROY: self.OnDestroy,}

        classAtom = win32gui.RegisterClass(wc)

        style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU

        self.hwnd = win32gui.CreateWindow( classAtom, "Taskbar Demo", style,

                0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT,

                0, 0, hinst, None)

        hicon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION)

        nid = (self.hwnd, 0, win32gui.NIF_ICON, win32con.WM_USER+20, hicon, "Demo")

        win32gui.Shell_NotifyIcon(win32gui.NIM_ADD, nid)



    def showMsg(self, title, msg):

        # 原作者使用Shell_NotifyIconA方法代替包装后的Shell_NotifyIcon方法

        # 据称是不能win32gui structure, 我稀里糊涂搞出来了.

        # 具体对比原代码.

        nid = (self.hwnd, # 句柄

                0, # 托盘图标ID

                win32gui.NIF_INFO, # 标识

                0, # 回调消息ID

                0, # 托盘图标句柄

                "TestMessage", # 图标字符串

                msg, # 气球提示字符串

                0, # 提示的显示时间

                title, # 提示标题

                win32gui.NIIF_INFO # 提示用到的图标

                )

        win32gui.Shell_NotifyIcon(win32gui.NIM_MODIFY, nid)



    def OnDestroy(self, hwnd, msg, wparam, lparam):

        nid = (self.hwnd, 0)

        win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid)

        win32gui.PostQuitMessage(0) # Terminate the app.

        



if __name__ == '__main__':

    t = TestTaskbarIcon()

    t.showMsg("出来吧!", "奥特曼!")

    time.sleep(5)

    win32gui.DestroyWindow(t.hwnd)

 

    1. 除了算法设计时, 使用python真的很简单.

    2. 会用python没什么, 还得会用千奇百怪的东西, 比如这个

    3. 不经常对windows开发的人,还是常备msdn和baidu/google才不会慌马脚..

 

    程序有改动,尽量缩减,原文请见:

 

写道
http://www.3snews.net/html/50/550-20986.html

 

你可能感兴趣的:(wxPython)