0

したがって、WinSSHD(Ubuntuから)を介してWindows XPボックスへのSSHセッションがあります。pywin32 でスクリーンショットを撮る小さな Python プログラムをコーディングしました。通常の「デスクトップ」セッションで 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 を使用しており、必要なモジュールをインストールできます。これはPILよりもはるかに高速であるため、現在pywin32を使用しています。

4

1 に答える 1

0

SSHが問題だと思います。SSH がこれを行うための最良の方法であるかどうかはわかりません。最善の方法は、Windows 側でスクリーンショットの作業を行うことです。私は最近似たようなことをしました。Internet Explorer で開いた Web ページのスクリーンショットを撮りたかったのですが、この目的のために Selenium Webdriver を Python バインディングと共に使用しています。

私がしたことは、TCP ソケットの助けを借りてそれを行うことにしたということでした。Windows マシンで TCP ソケットを開き、接続をリッスンする非常に単純な Python スクリプトを作成しました。接続を受信するとすぐに、スクリーンショットを撮る作業を行います。したがって、あなたの場合、そこにスクリーンショットを撮ってローカルに保存すると、スクリプトはこのファイルを配置したいシステムに SSH 接続できます。

お役に立てれば。

于 2012-07-12T18:44:25.863 に答える