2009-10-18 javaeye http://angeloce.iteye.com/admin/blogs/493681
=====================================
有一個小需求希望在wx下建立的托盤區表徵圖上顯示氣球訊息,很尷尬的是wx.TaskBarIcon不像wx.Window等有GetHandle方法,無法直接獲得控制代碼.解決的辦法
1.自己重寫TaskBarIcon...
2.直接遍曆找到控制代碼(更通用麻煩些).
#coding: cp936import win32guiimport win32conimport timeclass 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