Черные скриншоты с использованием c ++ и cygwin sshd service - PullRequest
0 голосов
/ 08 апреля 2011

У меня проблема при попытке сделать снимок экрана с помощью c ++ на Windows XP.

Код похож на этот:

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. Итак, как я могу заставить эту работу работать, я немного растерялся относительно того, в чем именно заключается проблема.

Ответы [ 2 ]

1 голос
/ 08 апреля 2011

Ваш сеанс входа в систему, вероятно, не имеет разрешения использовать настольный компьютер, поскольку он не является частью рабочего стола.

Редактировать: Если вы хотите получить скриншот только окна Cygwin, вы можете использовать функцию GetConsoleWindow, чтобы получить HWND этого окна - при условии, что он существует в сеансе sshd.

1 голос
/ 08 апреля 2011

Когда вы входите в Cygwin через SSH, у вас нет экрана (по крайней мере, ни одна Windows не знает, как это увидеть): у вас просто есть служба sshd - поэтому вы не можете сделать снимок экрана.

...