这是我想出的似乎是可行的。
class WindowManager: def __init__(self): self._handle = None def _window_enum_callback( self, hwnd, wildcard ): if re.match(wildcard, str(win32gui.GetWindowText(hwnd))) != None: self._handle = hwnd #CASE SENSITIVE def find_window_wildcard(self, wildcard): self._handle = None win32gui.EnumWindows(self._window_enum_callback, wildcard) def set_foreground(self): win32gui.ShowWindow(self._handle, win32con.SW_RESTORE) win32gui.SetWindowPos(self._handle,win32con.HWND_NOTOPMOST, 0, 0, 0, 0, win32con.SWP_NOMOVE + win32con.SWP_NOSIZE) win32gui.SetWindowPos(self._handle,win32con.HWND_TOPMOST, 0, 0, 0, 0, win32con.SWP_NOMOVE + win32con.SWP_NOSIZE) win32gui.SetWindowPos(self._handle,win32con.HWND_NOTOPMOST, 0, 0, 0, 0, win32con.SWP_SHOWWINDOW + win32con.SWP_NOMOVE + win32con.SWP_NOSIZE) shell = win32com.client.Dispatch("Wscript.Shell") shell.SendKeys('%') win32gui.SetForegroundWindow(self._handle) def find_and_set(self, search): self.find_window_wildcard(search) self.set_foreground()
然后找到一个窗口并将其激活,您可以…
w = WindowManager()w.find_and_set(".*cmd.exe*")
这是在python 2.7中,这也是我发现的一些链接,这些链接解释了为什么要切换活动窗口时您必须经历很多麻烦。
win32gui.SetActiveWindow()错误:找不到指定的过程
Windows
7:无论其他哪个窗口都有焦点,如何将一个窗口置于最前面?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)