当前位置: 首页 > 面试题库 >

Python窗口激活

薛弘厚
2023-03-14
问题内容

如何使用Python在Windows中以编程方式激活窗口?我正在向其发送击键,此刻,我只是确保它是最后使用的应用程序,然后发送击键Alt +
Tab从DOS控制台切换到击键。有没有更好的方法(因为我从经验中学到这种方法绝不是万无一失的)?


问题答案:

您可以使用win32gui模块来执行此操作。首先,您需要在窗口上获得有效的句柄。win32gui.FindWindow如果您知道窗口类名称或确切名称,则可以使用。如果没有,您可以使用枚举窗口,win32gui.EnumWindows然后尝试找到合适的窗口。

拥有手柄后,即可win32gui.SetForegroundWindow使用手柄调用。它将激活该窗口,并准备好进行击键。

请参见下面的示例。希望对您有所帮助

import win32gui
import re


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))) is not None:
            self._handle = hwnd

    def find_window_wildcard(self, wildcard):
        """find a window whose title matches the wildcard regex"""
        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(".*Hello.*")
w.set_foreground()


 类似资料:
  • 问题内容: 我有两个Java swing应用程序(意味着在两个JVM中运行)。有什么办法可以在它们之间切换吗?通过Java代码激活另一个应用程序的窗口? 问题答案: 您可以尝试使用JNA。我将使用Maven为您提供一些适用于Windows的代码(或多或少适用于其他系统):(对不起,但我无法正确设置格式) 创建Maven项目,并添加依赖项:

  • 主要内容:rolling(),expanding(),ewm()为了能更好地处理数值型数据,Pandas 提供了几种窗口函数,比如移动函数(rolling)、扩展函数(expanding)和指数加权函数(ewm)。 窗口函数应用场景非常多。举一个简单的例子:现在有 10 天的销售额,而您想每 3 天求一次销售总和,也就说第五天的销售额等于(第三天 + 第四天 + 第五天)的销售额之和,此时窗口函数就派上用场了。 窗口是一种形象化的叫法,这些函数在执行操作时,就

  • 我想初始化一个窗口为最大化,但我不知道如何做。我在Windows7上使用Python3.3和Tkinter 8.6。我想答案就在这里:http://www.tcl.tk/man/Tcl/Tkcmd/wm.htmam.m8但是我不知道如何将它输入到我的python脚本中 此外,我需要得到窗口的宽度和高度(既是最大化的,如果用户重新缩放它之后),但我想我可以自己找到。

  • 问题内容: 我正在尝试通过py2exe创建一个exe。该程序正在使用Tkinter显示类似弹出窗口的窗口。问题是,当我像这样运行安装程序时,一切正常: 但是当我尝试制作一个文件的exe时失败: 实际上,最终exe可以正常运行,但是不会显示任何窗口。我已经阅读过Windows 7上的bundle_files = 1可能存在问题,但我也尝试了bundle_files = 2来达到同样的效果。这是我的m

  • 我有以下传输视频的管道: 发件人: gst-launch-1.0 rpicamsrc预览=0!'视频/x-h264,宽度=1280,高度=720,帧速率=15/1,轮廓=高'!队列RTPH264支付!udpsink主机=192.168.0.8端口=50000 收件人: gst-launch-1.0 udpsrc端口=50000 caps=“应用程序/x-rtp,媒体=(字符串)视频,时钟速率=(i

  • Pygame混音器在Pygame窗口未激活时不播放音频。是否有可能在这样的环境下编程,即使在后台也可以加载和播放新的声音文件?下面是我的pygame代码。

  • 我有一个wxWidgets应用程序,它有许多子opengl窗口。我使用我自己的GL画布类,而不是wx类。窗口共享它们的OpenGL上下文。我不认为它是wxwidgets的事实在这里真的很重要。 opengl窗口是一个窗口的子窗口,它们是彼此的兄弟姐妹,包含在一个选项卡控件中。有点像MDI风格的界面,但它不是MDI窗口...每个都可以单独调整大小。除非启用Aero并且DWM处于活动状态,否则所有工作

  • 窗口的创建与控制 进程:主进程​ 1 //在主进程中. 2 const {BrowserWindow} = require('electron') 3 ​ 4 //或者从渲染器进程中使用 `remote`. 5 // const {BrowserWindow} = require('electron').remote 6 ​ 7 let win = new BrowserWindow({width