所以我通过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快得多。
答案 0 :(得分:0)
我认为SSH就是问题所在。我不确定SSH是否是最好的方法。最好的方法是在Windows端进行截图工作。我最近做了类似的事。我想截取一个在Internet Explorer中打开的网页的截图,我正在使用Selenium Webdriver为此目的使用Python绑定。
我所做的是我决定在TCP套接字的帮助下完成它。我刚写了一个非常简单的Python脚本,它在Windows机器上打开一个TCP套接字并监听连接。一旦收到连接,它就会完成截屏的工作。所以在你的情况下,它可以在那里截取屏幕截图并在本地保存,然后脚本可以通过SSH连接到你想要这个文件的系统。
希望这有帮助。