2012-07-12 99 views
0

因此,我通過WinSSHD(從Ubuntu)獲得了一個到Windows XP盒子的SSH會話。我編寫了一個小型的Python程序,用pywin32截圖。一切工作正常,當我直接在正常的「桌面」會話,但如果我SSH在運行的XP盒腳本並運行該腳本失敗的腳本:在Windows上通過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

我認爲SSH是問題所在。我不確定SSH是否是最好的方法。最好的方法是在Windows的最後做截圖工作。我最近做了類似的事情。我想截取在Internet Explorer中打開的網頁的截圖,並且我正在使用Selenium Webdriver用於此目的的Python綁定。

我所做的是我決定在TCP套接字的幫助下完成它。我只寫了一個非常簡單的Python腳本,它在Windows機器上打開一個TCP套接字並監聽連接。只要它收到連接,它就會執行截圖的工作。所以在你的情況下,它可以在那裏截取屏幕截圖並保存在本地,然後腳本可以SSH到你想要這個文件的系統。

希望這會有所幫助。

+0

我最終創建了一個帶有zeromq的「截圖服務器」,以便在「桌面」會話中發送請求時發送截圖。使用zeromq的IPC會更容易(也更快,我認爲),但它在Windows上不受支持,因此它必須使用localhost TCP。 Anywho,感謝您的輸入! – DaveO 2012-07-12 23:06:46