0

Windows XP で C++ を使用してスクリーンショットをキャプチャしようとすると問題が発生します。

コードは次のようになります。

hDc = CreateCompatibleDC(0);
hBmp = CreateCompatibleBitmap(GetDC(0), width, height);
HGDIOBJ obj = SelectObject(hDc, hBmp);
BitBlt(hDc, 0, 0, width, height, GetDC(0), 0, 0, SRCCOPY);

マシン上では正常に動作しますが、ssh で cygwin シェルにログインすると、同じコードを実行する黒いスクリーンショットが表示されます。BitBlt0 をGetLastError返し、無効なハンドルを示す 6 を返します。しかし、どのハンドルも 0 ではありません。では、どうすればこれを機能させることができるのでしょうか。正確に何が問題なのか、少しわかりません。

4

2 に答える 2

1

SSH 経由で Cygwin にログインすると、画面が表示されません (少なくとも 1 つの Windows では表示方法がわかりません)。sshd サービスがあるだけなので、スクリーンショットを撮ることはできません。

于 2011-04-08T15:28:56.767 に答える
1

デスクトップ DC はデスクトップの一部ではないため、ログイン セッションにはおそらくデスクトップ DC を使用する権限がありません。

編集: Cygwinウィンドウのみのスクリーンショットを取得することが目的の場合、GetConsoleWindow関数を使用してそのウィンドウのHWNDを取得できる場合があります-sshdセッションに存在すると仮定します。

于 2011-04-08T15:29:34.023 に答える