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 shell 时,我只得到一个运行相同代码的黑色屏幕截图。BitBlt返回 0 并GetLastError返回 6,表示句柄无效。但是没有一个句柄是 0。所以我怎么能做到这一点,我对到底是什么问题有点迷茫。

4

2 回答 2

1

当您通过 SSH 登录 Cygwin 时,您没有屏幕(至少没有一个 Windows 知道如何查看):您只有 sshd 服务 - 所以您无法截取屏幕截图。

于 2011-04-08T15:28:56.767 回答
1

您的登录会话可能没有使用桌面 DC 的权限,因为它不是桌面的一部分。

编辑:如果您的意图是仅获取 Cygwin 窗口的屏幕截图,您可以使用该GetConsoleWindow函数来获取该窗口的 HWND - 假设它存在于 sshd 会话中。

于 2011-04-08T15:29:34.023 回答