def main(): from xpra.platform.win32.common import user32 def click_callback(button, pressed): menu = CreatePopupMenu() AppendMenu(menu, win32con.MF_STRING, 1024, u"Generate balloon") AppendMenu(menu, win32con.MF_STRING, 1025, u"Exit") pos = POINT() GetCursorPos(byref(pos)) hwnd = tray.hwnd user32.SetForegroundWindow(hwnd) user32.TrackPopupMenu(menu, win32con.TPM_LEFTALIGN, pos.x, pos.y, 0, hwnd, None) PostMessageA(hwnd, win32con.WM_NULL, 0, 0) def command_callback(hwnd, cid): if cid == 1024: from xpra.platform.win32.win32_balloon import notify from xpra.os_util import BytesIOClass try: from PIL import Image #@UnresolvedImport img = Image.open("icons\\printer.png") buf = BytesIOClass() img.save(buf, "PNG") data = buf.getvalue() buf.close() icon = (b"png", img.size[0], img.size[1], data) except Exception as e: print("could not find icon: %s" % (e,)) icon = None else: pass notify(hwnd, 0, "hello", "world", timeout=1000, icon=icon) elif cid == 1025: print("Goodbye") DestroyWindow(hwnd) else: print("OnCommand for ID=%s" % cid) def win32_quit(): PostQuitMessage(0) # Terminate the app. from xpra.platform.paths import get_app_dir idir = os.path.abspath(get_app_dir()) wdir = os.path.join(idir, "win32") if os.path.exists(wdir): idir = wdir iconPathName = os.path.join(idir, "xpra.ico") tray = win32NotifyIcon(0, "test", move_callbacks=None, click_callback=click_callback, exit_callback=win32_quit, command_callback=command_callback, iconPathName=iconPathName) #pump messages: msg = ctypes.wintypes.MSG() pMsg = ctypes.pointer(msg) while user32.GetMessageA(pMsg, win32con.NULL, 0, 0) != 0: user32.TranslateMessage(pMsg) user32.DispatchMessageA(pMsg)
def main(): import os import sys from xpra.platform.win32.common import user32 def click_callback(button, pressed): CreatePopupMenu = user32.CreatePopupMenu CreatePopupMenu.restype = ctypes.wintypes.HMENU CreatePopupMenu.argtypes = [] AppendMenu = user32.AppendMenuW AppendMenu.restype = ctypes.wintypes.BOOL AppendMenu.argtypes = [ ctypes.wintypes.HMENU, ctypes.wintypes.UINT, ctypes.wintypes.UINT, ctypes.wintypes.LPCWSTR ] menu = CreatePopupMenu() AppendMenu(menu, win32con.MF_STRING, 1024, u"Generate balloon") AppendMenu(menu, win32con.MF_STRING, 1025, u"Exit") pos = POINT() GetCursorPos(byref(pos)) hwnd = tray.hwnd user32.SetForegroundWindow(hwnd) user32.TrackPopupMenu(menu, win32con.TPM_LEFTALIGN, pos.x, pos.y, 0, hwnd, None) PostMessageA(hwnd, win32con.WM_NULL, 0, 0) def command_callback(hwnd, cid): if cid == 1024: from xpra.platform.win32.win32_balloon import notify notify(hwnd, "hello", "world") elif cid == 1025: print("Goodbye") DestroyWindow(hwnd) else: print("OnCommand for ID=%s" % cid) def win32_quit(): PostQuitMessage(0) # Terminate the app. iconPathName = os.path.abspath(os.path.join(sys.prefix, "pyc.ico")) tray = win32NotifyIcon("test", move_callbacks=None, click_callback=click_callback, exit_callback=win32_quit, command_callback=command_callback, iconPathName=iconPathName) #pump messages: msg = ctypes.wintypes.MSG() pMsg = ctypes.pointer(msg) while user32.GetMessageA(pMsg, win32con.NULL, 0, 0) != 0: user32.TranslateMessage(pMsg) user32.DispatchMessageA(pMsg)