在Windows上通过SSH获取桌面的屏幕截图

时间:2012-07-12 17:45:50

标签: python windows pywin32

所以我通过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快得多。

1 个答案:

答案 0 :(得分:0)

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

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

希望这有帮助。