def start(self):
     win32gui.PumpMessages()
Exemple #2
0
                                          None)
        print "Python listening for WM_COPYDATA on hwnd = %d" % self.hwnd

    def OnCopyData(self, hwnd, msg, wparam, lparam):
        print "Copy data msg received! hwnd=%d msg=0x%x wparam=0x%x lparam=0x%x" % (
            hwnd, msg, wparam, lparam)
        pCDS = ctypes.cast(lparam, PCOPYDATASTRUCT)
        if pCDS.contents.dwData != WM_DISPLAY_TEXT:
            print "Not WM_DISPLAY_TEXT dwData=%d cbData=0x%x lpData=0x%x" % (
                pCDS.contents.dwData, pCDS.contents.cbData,
                pCDS.contents.lpData)
            return

        print "WM_DISPLAY_TEXT received cbData=0x%x lpData=0x%x" % (
            pCDS.contents.cbData, pCDS.contents.lpData)
        msg = ctypes.string_at(pCDS.contents.lpData)
        recvCommand(msg)
        return 1


if len(sys.argv) == 1:
    l = Listener()
    win32gui.PumpMessages()
else:
    if len(sys.argv) != 3:
        help()
    else:
        h = sys.argv[1]
        msg = sys.argv[2]
        sendCommand(h, msg)
    def run(self):
        def wnd_proc(h_wnd, message, w_param, l_param):
            """Displays a transparent window with some graphic elements
			Displays a transparent window with some graphic elements
			:param h_wnd: an input argument
			:returns: nothing
			"""
            if message == win32con.WM_QUIT:
                # print("Closing the window overlay")
                win32gui.PostQuitMessage(0)
                return 0

            if message == win32con.WM_PAINT:
                hdc, paint_struct = win32gui.BeginPaint(h_wnd)
                win32gui.SetGraphicsMode(hdc, win32con.GM_ADVANCED)
                win32gui.BringWindowToTop(h_wnd)

                for r in self.graphical_elements:

                    if 'geometry' in r:
                        geometry = r['geometry']
                    else:
                        geometry = None
                    if 'x' in r:
                        x = r['x'] - self.x_min
                    else:
                        x = 0
                    if 'y' in r:
                        y = r['y'] - self.y_min
                    else:
                        y = 0
                    if 'width' in r:
                        width = r['width']
                    else:
                        width = 100
                    if 'height' in r:
                        height = r['height']
                    else:
                        height = 100
                    if 'xyrgb_array' in r:
                        xyrgb_array = r['xyrgb_array']
                    else:
                        xyrgb_array = ((15, 15, 255, 0, 0), (15, 45, 0, 255,
                                                             0), (45, 30, 0, 0,
                                                                  255))
                    if 'color' in r:
                        color_r = r['color'][0]
                        color_g = r['color'][1]
                        color_b = r['color'][2]
                    else:
                        color_r = 255
                        color_g = 0
                        color_b = 0

                    if 'thickness' in r:
                        thickness = r['thickness']
                    else:
                        thickness = 0

                    if 'angle' in r:
                        angle = r['angle']
                    else:
                        angle = 0

                    if 'geometry' in r and r['geometry'] is Shape.triangle:
                        vertices = ()
                        for xyrgb in xyrgb_array:
                            vertices = vertices + (
                                {
                                    'x': int(round(xyrgb[0])) - self.x_min,
                                    'y': int(round(xyrgb[1])) - self.y_min,
                                    'Red': xyrgb[2] * 256,
                                    'Green': xyrgb[3] * 256,
                                    'Blue': xyrgb[4] * 256,
                                    'Alpha': 0
                                }, )
                        mesh = ((0, 1, 2), )
                        win32gui.GradientFill(hdc, vertices, mesh,
                                              win32con.GRADIENT_FILL_TRIANGLE)

                    if 'brush_color' in r:
                        brush_color_r = r['brush_color'][0]
                        brush_color_g = r['brush_color'][1]
                        brush_color_b = r['brush_color'][2]
                    else:
                        brush_color_r = 255
                        brush_color_g = 255
                        brush_color_b = 255

                    if thickness == 0:
                        color_r = brush_color_r
                        color_g = brush_color_g
                        color_b = brush_color_b

                    if 'font_size' in r:
                        font_size = r['font_size']
                    else:
                        font_size = 18

                    if 'font_name' in r:
                        font_name = r['font_name']
                    else:
                        font_name = "Arial"

                    my_brush = None
                    if 'brush' in r and width > 1 and height > 1:
                        brush = r['brush']
                        brush_color = win32api.RGB(brush_color_r,
                                                   brush_color_g,
                                                   brush_color_b)
                        if brush is Brush.solid:
                            my_brush = win32gui.CreateSolidBrush(brush_color)
                        elif brush is Brush.b_diagonal:
                            my_brush = win32gui.CreateHatchBrush(
                                win32con.HS_BDIAGONAL, brush_color)
                        elif brush is Brush.cross:
                            my_brush = win32gui.CreateHatchBrush(
                                win32con.HS_CROSS, brush_color)
                        elif brush is Brush.diag_cross:
                            my_brush = win32gui.CreateHatchBrush(
                                win32con.HS_DIAGCROSS, brush_color)
                        elif brush is Brush.f_diagonal:
                            my_brush = win32gui.CreateHatchBrush(
                                win32con.HS_FDIAGONAL, brush_color)
                        elif brush is Brush.horizontal:
                            my_brush = win32gui.CreateHatchBrush(
                                win32con.HS_HORIZONTAL, brush_color)
                        elif brush is Brush.vertical:
                            my_brush = win32gui.CreateHatchBrush(
                                win32con.HS_VERTICAL, brush_color)

                        old_brush = win32gui.SelectObject(hdc, my_brush)
                    pen = win32gui.CreatePen(
                        win32con.PS_GEOMETRIC, thickness,
                        win32api.RGB(color_r, color_g, color_b))
                    old_pen = win32gui.SelectObject(hdc, pen)

                    if 'center_of_rotation' in r:
                        center_of_rotation_x = r['center_of_rotation'][0]
                        center_of_rotation_y = r['center_of_rotation'][1]
                    else:
                        center_of_rotation_x = 0
                        center_of_rotation_y = 0

                    if angle != 0:
                        r_angle = angle * (math.pi / 180)
                        Py_XFORM = win32gui.GetWorldTransform(hdc)
                        win32gui.SetWorldTransform(
                            hdc, {
                                'M11': math.cos(r_angle),
                                'M12': math.sin(r_angle),
                                'M21': math.sin(r_angle) * -1,
                                'M22': math.cos(r_angle),
                                'Dx': x,
                                'Dy': y
                            })
                        x, y = -center_of_rotation_x, -center_of_rotation_y

                    if 'text_format' in r:
                        text_format = eval(r['text_format'])
                    else:
                        text_format = win32con.DT_CENTER | win32con.DT_SINGLELINE | win32con.DT_VCENTER

                    if 'geometry' in r:
                        if r['geometry'] is Shape.rectangle:
                            win32gui.Rectangle(hdc, int(round(x)),
                                               int(round(y)),
                                               int(round(x + width)),
                                               int(round(y + height)))
                        elif r['geometry'] is Shape.ellipse:
                            win32gui.Ellipse(hdc, int(round(x)), int(round(y)),
                                             int(round(x + width)),
                                             int(round(y + height)))
                        elif r['geometry'] is Shape.arrow:
                            a = thickness
                            t = ((x - int(a * 1.4), y), (x - a * 4, y + a * 3),
                                 (x, y), (x - a * 4, y - a * 3),
                                 (x - int(a * 1.4), y), (x - a * 9, y))
                            win32gui.Polyline(hdc, t)
                        elif r['geometry'] is Shape.image:
                            hicon = r['hicon']
                            win32gui.DrawIconEx(hdc, x, y, hicon, 0, 0, 0,
                                                None, 0x0003)
                        elif r['geometry'] is Shape.triangle and thickness > 0:
                            t = ()
                            for xyrgb in xyrgb_array:
                                t = t + ((int(round(
                                    xyrgb[0])), +int(round(xyrgb[1]))), )
                            t = t + ((int(round(xyrgb_array[0][0])),
                                      int(round(xyrgb_array[0][1]))), )
                            win32gui.Polyline(hdc, t)
                        if angle != 0:
                            win32gui.SetWorldTransform(hdc, Py_XFORM)
                        win32gui.SelectObject(hdc, old_pen)

                    if 'brush' in r and width > 1 and height > 1:
                        win32gui.SelectObject(hdc, old_brush)

                    if 'text' in r:
                        text = r['text']
                        lf = win32gui.LOGFONT()
                        lf.lfFaceName = font_name
                        lf.lfHeight = font_size
                        lf.lfWeight = win32con.FW_NORMAL
                        lf.lfQuality = win32con.ANTIALIASED_QUALITY
                        hf = win32gui.CreateFontIndirect(lf)
                        old_font = win32gui.SelectObject(hdc, hf)

                        if 'text_color' in r:
                            text_color_r = r['text_color'][0]
                            text_color_g = r['text_color'][1]
                            text_color_b = r['text_color'][2]
                        else:
                            text_color_r = 0
                            text_color_g = 0
                            text_color_b = 0
                        win32gui.SetTextColor(
                            hdc,
                            win32api.RGB(text_color_r, text_color_g,
                                         text_color_b))

                        if 'text_bg_color' in r:
                            text_bg_color_r = r['text_bg_color'][0]
                            text_bg_color_g = r['text_bg_color'][1]
                            text_bg_color_b = r['text_bg_color'][2]
                        else:
                            text_bg_color_r = brush_color_r
                            text_bg_color_g = brush_color_g
                            text_bg_color_b = brush_color_b
                        win32gui.SetBkMode(hdc, win32con.TRANSPARENT)
                        win32gui.SetBkColor(
                            hdc,
                            win32api.RGB(text_bg_color_r, text_bg_color_g,
                                         text_bg_color_b))
                        tuple_r = tuple([
                            int(round(x)),
                            int(round(y)),
                            int(round(x + width)),
                            int(round(y + height))
                        ])
                        win32gui.DrawTextW(hdc, text, -1, tuple_r, text_format)
                        win32gui.SelectObject(hdc, old_font)
                win32gui.EndPaint(h_wnd, paint_struct)
                return 0
            else:
                return win32gui.DefWindowProc(h_wnd, message, w_param, l_param)

        h_instance = win32api.GetModuleHandle()
        wnd_class = win32gui.WNDCLASS()
        wnd_class.style = win32con.CS_HREDRAW | win32con.CS_VREDRAW
        wnd_class.lpfnWndProc = wnd_proc
        wnd_class.hInstance = h_instance
        wnd_class.hCursor = win32gui.LoadCursor(None, win32con.IDC_ARROW)
        wnd_class.hbrBackground = win32gui.GetStockObject(win32con.WHITE_BRUSH)
        wnd_class.lpszClassName = self.class_name

        wnd_class_atom = win32gui.RegisterClass(wnd_class)
        ex_style = win32con.WS_EX_COMPOSITED | win32con.WS_EX_LAYERED | win32con.WS_EX_NOACTIVATE | \
             win32con.WS_EX_TOPMOST | win32con.WS_EX_TRANSPARENT
        style = win32con.WS_DISABLED | win32con.WS_POPUP | win32con.WS_VISIBLE

        self.h_window = win32gui.CreateWindowEx(
            ex_style,
            wnd_class_atom,
            'OverlayWindow',
            style,
            win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN),  # x
            win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN),  # y
            win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN),  # width
            win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN),  # height
            None,  # hWndParent
            None,  # hMenu
            h_instance,
            None  # lpParam
        )
        monitors = win32api.EnumDisplayMonitors()
        self.x_min = min([
            win32api.GetMonitorInfo(monitor[0])['Work'][0]
            for monitor in monitors
        ])
        self.y_min = min([
            win32api.GetMonitorInfo(monitor[0])['Work'][1]
            for monitor in monitors
        ])
        win32gui.SetLayeredWindowAttributes(
            self.h_window, 0x00ffffff, self.transparency,
            win32con.LWA_COLORKEY | win32con.LWA_ALPHA)
        win32gui.SetWindowPos(
            self.h_window, win32con.HWND_TOPMOST, 0, 0, 0, 0,
            win32con.SWP_NOACTIVATE | win32con.SWP_NOMOVE | win32con.SWP_NOSIZE
            | win32con.SWP_SHOWWINDOW)

        if self.period > 0:
            self.auto_refresh()
        #print("PumpMessages start")
        win32gui.PumpMessages()
Exemple #4
0
 def complete(self):
     """Flag the progress as being complete - closes the dialog."""
     win32gui.DestroyWindow(self.window_handle)
     win32gui.PumpMessages()
Exemple #5
0
 def listen(self):
     """Run the tray program."""
     self.logger.info('Started listening for callbacks...')
     win32gui.PumpMessages()
Exemple #6
0
def winmain():
	w=MainWindow()
	win32gui.PumpMessages()
Exemple #7
0
        elif message == con.WM_CLOSE:
            gui.DestroyWindow(hWnd)
        elif message == con.WM_DESTROY:
            gui.PostQuitMessage(0)
        elif message == con.WM_QUERYENDSESSION:
            return True

    def OnSession(self, event, sessionID):
        print("event 0x%x on session %d" % (event, sessionID))

        #if sessionID == ts.ProcessIdToSessionId(os.getpid()):

        # Since you already have a Python script, you can use it here directly.
        # Otherwise, replace this with something involving subprocess.Popen()
        #raise NotImplemented

        if WTS_SESSION_LOCK == event:
            self.sessionLock(sessionID)
        elif WTS_SESSION_UNLOCK == event:
            self.sessionUnlock(sessionID)

    def sessionLock(self, sessionID):
        print("Заблокировал экран")

    def sessionUnlock(self, sessionID):
        print("Разблокировал экран")


Monitor()
gui.PumpMessages()
Exemple #8
0
def main():
    """Invoke GUI application."""
    logging.basicConfig(level=logging.INFO)
    dll = BeamOptikDLL()
    dll.GetInterfaceInstance()
    win32gui.PumpMessages()
Exemple #9
0
    def main_thread(self):
        win32gui.PumpMessages()

# vim:set tabstop=4 shiftwidth=4 expandtab:
Exemple #10
0
def run_notify():
  global w
  w = Notification ()
  print "pre PumpMessages"
  win32gui.PumpMessages ()
  print "post PumpMessages"
Exemple #11
0
def DemoCreateWindow():
    w = DemoWindow()
    w.CreateWindow()
    # PumpMessages runs until PostQuitMessage() is called by someone.
    win32gui.PumpMessages()
Exemple #12
0
 def msgMainLoop(self):
     win32gui.PumpMessages()
Exemple #13
0
def show_agent_status(window, gui):
    import win32api
    import win32con
    import win32gui
    import win32ts
    import win32ui

    class AgentStatus:
        def __init__(self, agent_status, salt_status, check_status,
                     mesh_status):
            self.agent_status = agent_status
            self.salt_status = salt_status
            self.check_status = check_status
            self.mesh_status = mesh_status
            self.icon = os.path.join(os.getcwd(), "onit.ico")
            win32gui.InitCommonControls()
            self.hinst = win32api.GetModuleHandle(None)
            className = "AgentStatus"
            message_map = {
                win32con.WM_DESTROY: self.OnDestroy,
            }
            wc = win32gui.WNDCLASS()
            wc.style = win32con.CS_HREDRAW | win32con.CS_VREDRAW
            try:
                wc.hIcon = win32gui.LoadImage(
                    self.hinst,
                    self.icon,
                    win32con.IMAGE_ICON,
                    0,
                    0,
                    win32con.LR_LOADFROMFILE,
                )
            except Exception:
                pass
            wc.lpfnWndProc = message_map
            wc.lpszClassName = className
            win32gui.RegisterClass(wc)
            style = win32con.WS_OVERLAPPEDWINDOW
            self.hwnd = win32gui.CreateWindow(
                className,
                "Tactical RMM",
                style,
                win32con.CW_USEDEFAULT,
                win32con.CW_USEDEFAULT,
                400,
                300,
                0,
                0,
                self.hinst,
                None,
            )

            win32gui.ShowWindow(self.hwnd, win32con.SW_SHOW)

            hDC, paintStruct = win32gui.BeginPaint(self.hwnd)
            rect = win32gui.GetClientRect(self.hwnd)
            win32gui.DrawText(
                hDC,
                f"Agent: {self.agent_status}",
                -1,
                (0, 0, 384, 201),
                win32con.DT_SINGLELINE | win32con.DT_CENTER
                | win32con.DT_VCENTER,
            )

            win32gui.DrawText(
                hDC,
                f"Check Runner: {self.check_status}",
                -1,
                (0, 0, 384, 241),
                win32con.DT_SINGLELINE | win32con.DT_CENTER
                | win32con.DT_VCENTER,
            )
            win32gui.DrawText(
                hDC,
                f"Salt Minion: {self.salt_status}",
                -1,
                (0, 0, 384, 281),
                win32con.DT_SINGLELINE | win32con.DT_CENTER
                | win32con.DT_VCENTER,
            )
            win32gui.DrawText(
                hDC,
                f"Mesh Agent: {self.mesh_status}",
                -1,
                (0, 0, 384, 321),
                win32con.DT_SINGLELINE | win32con.DT_CENTER
                | win32con.DT_VCENTER,
            )

            win32gui.EndPaint(self.hwnd, paintStruct)
            win32gui.UpdateWindow(self.hwnd)

        def OnDestroy(self, hwnd, message, wparam, lparam):
            win32gui.PostQuitMessage(0)
            return True

    try:
        agent_status = psutil.win_service_get("tacticalagent").status()
    except psutil.NoSuchProcess:
        agent_status = "Not Installed"

    try:
        salt_status = psutil.win_service_get("salt-minion").status()
    except psutil.NoSuchProcess:
        salt_status = "Not Installed"

    try:
        check_status = psutil.win_service_get("checkrunner").status()
    except psutil.NoSuchProcess:
        check_status = "Not Installed"

    try:
        mesh_status = psutil.win_service_get("Mesh Agent").status()
    except psutil.NoSuchProcess:
        mesh_status = "Not Installed"

    if gui:
        win32gui.ShowWindow(window, win32con.SW_HIDE)
        w = AgentStatus(agent_status, salt_status, check_status, mesh_status)
        win32gui.PumpMessages()
        win32gui.CloseWindow(window)
    else:
        print("Agent: ", agent_status)
        print("Check Runner: ", check_status)
        print("Salt Minion: ", salt_status)
        print("Mesh Agent: ", mesh_status)
Exemple #14
0
 def run(self):
     self.logger.info('run')
     win32gui.PumpMessages()
     return
Exemple #15
0
 def run_forever(self):
     win32gui.PumpMessages()