0

因此,我通过 WinSSHD(来自 Ubuntu)与 Windows XP 框建立了 SSH 会话。我编写了一个 Python 小程序,用 pywin32 截取屏幕截图。当我在正常的“桌面”会话中直接在 XP 机器上运行脚本时,一切正常,但如果我通过 SSH 进入并运行脚本,脚本将失败:

Traceback (most recent call last):                                                                                   
  File "ss.py", line 38, in <module>                                                                                 
    win32_ss()                                                                                                       
  File "ss.py", line 19, in win32_ss                                                                                 
    cDC.BitBlt((0, 0),(w, h) , dcObj, (0, 0), win32con.SRCCOPY)                                                      
win32ui.error: BitBlt failed 

我假设这是因为 SSH 会话与 XP 会话不同,并且无法访问“桌面”显示设备。我在 linux 中找到了有关如何执行此操作的参考(我认为这是我想要做的):

DISPLAY=:0.0 import -window root /tmp/shot.png

我想我正在寻找的是如何在 Windows 中执行此操作。同样,我使用的是 Python,可以安装任何需要的模块。我目前正在使用 pywin32,因为这比 PIL 快得多。

4

1 回答 1

0

我认为SSH是问题所在。我不确定 SSH 是否是最好的方法。最好的方法是在 Windows 端进行屏幕截图工作。我最近做了类似的事情。我想截取在 Internet Explorer 中打开的网页的屏幕截图,为此我使用 Selenium Webdriver 和 Python 绑定。

我所做的是我决定在 TCP 套接字的帮助下完成它。我刚刚编写了一个非常简单的 Python 脚本,它在 Windows 机器上打开一个 TCP 套接字并监听连接。一旦它收到连接,它就会执行截取屏幕截图的工作。因此,在您的情况下,它可以在那里截取屏幕截图并将其保存在本地,然后脚本可以通过 SSH 连接到您希望此文件所在的系统。

希望这可以帮助。

于 2012-07-12T18:44:25.863 回答