【问题标题】:Hijacking, redirecting, display output with Python 2.7使用 Python 2.7 劫持、重定向、显示输出
【发布时间】:2011-06-22 19:48:22
【问题描述】:

我是一个没有经验的新程序员,但我正在学习 Python 2.7。我使用 Python(x,y) 或 Spydar,因为这些程序是在 Windows 7 上调用的。

我使用的主要包是numpypil 和可能的win32gui

我目前正在尝试编写一个程序来从第三方软件中挖掘信息。这违背了他们的意愿,他们让事情变得困难。我使用ImageGrab 然后numpy 来获得一些结果。但是,或者我相信,这迫使我将要阅读的窗口保持在焦点上,这不是最佳选择。

我想知道是否有任何方法可以劫持整个窗口并将输出直接重定向到“虚拟”副本中,这样我就可以让它在后台运行?

查看win32api 的演示时,有一个名为desktopmanager 的脚本。我从来没有让它工作,可能是因为我运行的是 Windows 7,它应该创建新的桌面。我真的不知道多个桌面是如何工作的,但如果它们并行运行,可能有一种方法可以在当前窗口周围创建一个新桌面。我不知道怎么做,到目前为止只是一个想法。

它对我不起作用的原因不是它没有创建一个新桌面,而是它一旦创建,我就无法从它返回。任务栏图标和任务栏本身都不会出现。

【问题讨论】:

    标签: python python-2.7 winapi


    【解决方案1】:

    一种可行的方法是这样做:

    • 获取窗口句柄(FindWindow() 或类似的东西,有几种方法可以做到这一点)
    • 获取窗口尺寸(GetClientRect() 或 GetWindowRect())
    • 获取窗口的设备上下文 (GetWindowDC())
    • 从窗口获取图像数据(BitBlt() 或类似方法)

    您可能需要提升权限才能访问另一个进程窗口 dc,如果是这样,您可能需要将代码/dll 注入目标进程空间来执行此操作。

    HTH。

    【讨论】:

    • 是的,这让我走到了一半,你似乎总是必须显示我检索的数据。由于最终目标是将其转换为 numpy,因此如果我可以将其直接转换为矩阵而不是其他图片会更好。不过,这很棒,谢谢。
    猜你喜欢
    • 2012-08-20
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 2017-06-17
    • 2011-11-14
    相关资源
    最近更新 更多