2011-04-08 85 views
0

我在嘗試在Windows XP上使用C++捕獲屏幕截圖時出現問題。使用C++和cygwin sshd服務的黑屏截圖

的代碼與此類似:

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外殼我只是得到一個黑色的屏幕截圖運行相同的代碼。 BitBlt返回0,GetLastError返回6表示無效句柄。但是沒有一個手柄是0.所以我怎麼能做到這一點,我對於究竟是什麼問題有點失落。

回答

1

當你通過SSH登錄到Cygwin時,你沒有一個屏幕(至少沒有一個Windows知道如何看):你只有sshd服務 - 所以你不能截圖。

1

您的登錄會話可能沒有使用桌面DC的權限,因爲它不是桌面的一部分。

編輯:如果你的目的是讓Cygwin的窗口截圖而已,你也許能夠使用GetConsoleWindow函數來獲得窗口的HWND - 假設它存在於一個sshd的會議。

+0

是的,我想知道我能否以某種方式獲得許可。 – Zitrax 2011-04-08 15:36:12

+0

'GetDC(0)'爲其自己的私人桌面返回一個DC,沒有應用程序正在運行,因此它是黑色的。 – 2011-04-08 15:41:33

+0

@Ben,這不會解釋從BitBlt返回的錯誤。我確定位圖是黑色的,因爲它是如何初始化的。 – 2011-04-08 15:45:32