• 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

     

  • 相关阅读:
    ByteArrayOutputStream的用法
    Oracle字符函数(转换大小写,替换等)
    Linux 结束占用端口的程序
    堆是先进先出,栈是先进后出
    帮小黎解决问题C++巩固获得数字每个位置上的数
    负数的二进制表示方法
    为什么1Byte=8bit
    黎活明给程序员的忠告
    寻找最好的编程语言
    U盘启动时无USB-HDD选项的解决方案
  • 原文地址:https://www.cnblogs.com/c9com/p/2845547.html
Copyright © 2020-2023  润新知