如何在python中使用win32gui将窗口带到前台,即使窗口最小化?

时间:2016-07-22 14:32:36

标签: python windows python-2.7 winapi win32gui

我需要帮助在Windows 10计算机上使用python中的win32gui将最小化的窗口带到前台。我可能错过了一些非常简单的东西,但我无法在这里或其他论坛找到答案。

附加代码尝试激活窗口并发送击键。它完全符合我的要求和期望......除非我试图激活的窗口被最小化。如果窗口位于另一个窗口后面,或并排或平铺,它可以正常工作。但如果它被最小化,似乎永远找不到窗口并且键击不会被发送到窗口。脚本运行没有错误。

除了进行小编辑外,我没有写这个脚本。所以,我对所使用的方法并不是很熟悉。但它完全按照我的意愿去做,所以我只是想找人来帮助我对脚本进行适当的调整。感谢。

import win32gui
import re
import win32api
import win32con
import time


class WindowMgr:
      """Encapsulates some calls to the winapi for window management"""
      def __init__ (self):
        """Constructor"""
        self._handle = None

      def find_window(self, class_name, window_name = None):
        """find a window by its class_name"""
        self._handle = win32gui.FindWindow(class_name, window_name)

      def _window_enum_callback(self, hwnd, wildcard):
        '''Pass to win32gui.EnumWindows() to check all the opened windows'''
        if re.match(wildcard, str(win32gui.GetWindowText(hwnd))) != None:
            self._handle = hwnd

      def find_window_wildcard(self, wildcard):
        self._handle = None
        win32gui.EnumWindows(self._window_enum_callback, wildcard)

      def set_foreground(self):
         """put the window in the foreground"""
        win32gui.SetForegroundWindow(self._handle)


w = WindowMgr()
w.find_window_wildcard(".*Notepad.*")
w.set_foreground()
time.sleep(1)

Xkey = 0x58 #VirtualKey Code

win32api.keybd_event(Xkey,0,0,0) # holds the key down
time.sleep(1) # waits 1 second
win32api.keybd_event(Xkey,0,win32con.KEYEVENTF_KEYUP,0) # releases the key

0 个答案:

没有答案