如何使用 pywin32 在 Python 中获取特定应用程序窗口的句柄?

2024-06-26

我正在尝试修改一些在 Windows 10 中截取特定应用程序窗口屏幕截图的 Python 代码。我正在尝试使用win32ui / win32guipywin32 包中的模块用于此目的。这是损坏的代码:

def getWindow():
    name = "Windows PowerShell"
    window = win32ui.FindWindow(None, name)
    windowDC = win32gui.GetWindowDC(window)

最后一行导致错误。这是控制台输出的相关部分:

  File ".\fake_file_name.py", line 9, in getWindow
    windowDC = win32gui.GetWindowDC(window)
TypeError: The object is not a PyHANDLE object

我对 Python 的类型系统或错误消息不是很熟悉,但是这个错误让它看起来像GetWindowDC期待一个类型参数PyHANDLE. 文档 http://timgolden.me.uk/pywin32-docs/win32gui__FindWindow_meth.html我可以找到win32gui.FindWindow使它看起来像PyHANDLE确实是输出类型。

另一方面,这些非常相似的代码行来自一个函数does work:

    hwin = win32gui.GetDesktopWindow()
    hwindc = win32gui.GetWindowDC(hwin)

这里是doc page http://timgolden.me.uk/pywin32-docs/win32gui__GetDesktopWindow_meth.html for win32gui.GetDesktopWindow。如果之前显示的错误消息没有具体提及PyHANDLE,我只是假设FindWindow and GetDesktopWindow返回不同且不兼容的类型。

有人可以帮助我理解此错误消息的含义以及出现的原因吗?我还对获取名为“Windows Powershell”的窗口的设备上下文的示例代码感兴趣,正如我损坏的代码尝试做的那样。

其他信息:文档页面 http://timgolden.me.uk/pywin32-docs/win32gui__GetWindowDC_meth.html for win32gui.GetWindowDC


您可以使用EnumWindows(),这将搜索所有窗口,读入MSDN doc https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-enumwindows:

import win32gui

def getShell():
    thelist = []
    def findit(hwnd,ctx):
        if win32gui.GetWindowText(hwnd) == "Windows PowerShell": # check the title
            thelist.append(hwnd)

    win32gui.EnumWindows(findit,None)
    return thelist

b = getShell()
print(b) # b is the list of hwnd,contains those windows title is "Windows PowerShell"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 pywin32 在 Python 中获取特定应用程序窗口的句柄? 的相关文章

随机推荐

  • 带有单选框和复选框的 WinForms TreeView

    我有一个情况 我希望 TreeView 能够在多个根节点上显示单选按钮 并在其子节点上显示复选框 任何根节点下都只有一层子节点 无线电也应该表现得像一个组 即选择一个根并取消选择其他无线电 我一直试图用图像来伪造它 但它看起来不现实 我最初
  • 追踪 Haskell 中的错误

    我如何获得有关 Haskell 错误发生位置的更多信息 例如 昨天我正在开发一个 Haskell 程序 该程序解析输入文件 转换数据 然后打印出报告信息 有一次 我跑了 main 然后回来了 Prelude read parse error
  • 整数 numpy 数组乘以浮点数

    我有一个包含整数值的 numpy 数组 如果我将整个矩阵乘以一个浮点数 结果是一个浮点矩阵 但如果我通过 for 循环逐列相乘 它只给出整数部分 import numpy as np A np array 1 2 3 4 5 6 7 8 9
  • 在 Eclipse 中从 C++ 调用 Ada

    我正在尝试创建一个完全托管在 Eclipse 中 以 C 启动并调用 Ada 的程序 我已经加载了 GNATBench 并且可以毫无问题地运行 Ada 程序 我不能做的是让 C 项目调用 Ada 项目 经过一番搜寻 我找到并使用 make
  • JavaScript 预分配数组未捕获 RangeError:数组长度无效

    我有一个小循环的代码 它抛出 Uncaught RangeError Invalid Array Length 我能够在 Google Chrome 控制台中重现它 const COUNT 100 000 000 const xValues
  • 在 Pycharm 中使用 scikit-learn 未解析的属性引用“predict()”

    当使用 scikit learn 中的决策树分类器时 docs http scikit learn org stable modules tree html展示您将存储分类器的变量重新分配给其自身的输出 调用fit method clf t
  • scrapy中cookies的正确使用形式是什么

    我是个新手 我正在一个使用cookies的网络中使用scrapy 这对我来说是一个问题 因为我可以在没有cookies的网络上获取数据 但在有cookies的网络上获取数据对我来说很困难 我有这个代码结构 class mySpider Ba
  • 角度1.5.5材料设计给了我未知的提供者:$$HashMapProvider <- $$HashMap <- $$animateQueue <- $animate错误

    我正在尝试将角度材料 1 5 5 与角度 1 6 5 一起使用 我的代码如下所示 索引 html
  • Facebook Like 按钮重定向到 Android 中的 Facebook 网站

    我正在开发类似 facebook 的按钮来与我的应用程序集成 这是从开发人员 facebook com 复制的 html 代码 div div
  • 用于编辑文本的电子邮件键盘

    以下代码似乎不起作用 我想要电子邮件键盘 and com显示编辑文本 emailEditText setInputType InputType TYPE TEXT VARIATION EMAIL ADDRESS 将其添加到您的布局中 and
  • 获取 get 或 post 请求的响应的响应字符集

    我正在努力在 java web 应用程序中提取响应字符集 我在其中使用 Apache HTTP 客户端 例如 从 Content Type 标头获得的一个可能值是 text html charset UTF 8 然后我的代码将提取 符号之后
  • MOQ 更改字段值的模拟 void 方法

    我是最小起订量和模拟的新手 假设我有一个像这样的类 带有一个更改值的 void 方法 public class Sample public virtual int Number get set public virtual void Che
  • 从 Codeigniter 应用程序在 Facebook 墙上发帖

    我有一个基于 CI 的应用程序 允许用户发布类似于 Facebook 墙的更新流 目前 用户可以使用 FB connect 通过 Facebook 验证我的应用程序 我想提供一种可能性 即用户在发布到我的应用程序时也能够将相同的帖子发送到他
  • 什么是 IIS 应用程序池?

    应用程序池到底是什么 它的目的是什么 应用程序池允许您将应用程序彼此隔离 即使它们运行在同一台服务器上 这样 如果一个应用程序出现错误 就不会影响其他应用程序 此外 应用程序池允许您分隔需要不同安全级别的不同应用程序 这是一个很好的资源 I
  • 在 iPad 上的弹出窗口中推送导航视图控制器时动画弹出窗口内容大小

    当包含的 UINavigationController 推送新控制器时 如何让 UIPopoverController 为其大小设置动画 我有一个UIPopover正在显示从UIBarButtonItem在我的 iPad 应用程序中 它包含
  • 有没有什么工具可以验证@XmlPath注释? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何工具可以在 Eclipse 或 IntelliJIdea java 框架或其他框架编译时验证
  • 根据 cron 规范计算下一个计划时间

    在给定当前时间和 cron 规范的情况下 计算事件下一次运行时间的有效方法是什么 我正在寻找 每分钟循环检查是否符合规范 以外的东西 规格示例可能是 每月1日 15日15 01 每小时整点的 10 20 30 40 50 分钟 Python
  • Android 相机:线程?哪个应该做什么

    我试图弄清楚哪些线程应该在 Android 中执行哪些操作 我发现官方文档中唯一说明的是camera open 应该放入它自己的线程中 关于什么 camera startPreview camera stopPreview camera r
  • Python setup.py 运行 shell 脚本

    我需要在创建 Python 包时在 sdist 阶段运行我自己的脚本 我写了以下脚本 你知道更好的方法吗 您能否推荐更好的一个或链接到 setuptools 的官方文档 其中已解释了这一时刻 import subprocess import
  • 如何使用 pywin32 在 Python 中获取特定应用程序窗口的句柄?

    我正在尝试修改一些在 Windows 10 中截取特定应用程序窗口屏幕截图的 Python 代码 我正在尝试使用win32ui win32guipywin32 包中的模块用于此目的 这是损坏的代码 def getWindow name Wi