Какие библиотеки захвата экрана Windows (C ++) соответствуют моим требованиям? - PullRequest
2 голосов
/ 11 сентября 2009

Я готов передать функциональность захвата экрана нашего приложения, потому что это не наша основная деятельность, и я потратил слишком много времени, пытаясь заставить наш код выполнять все, что мне нужно. Время для специалиста, я думаю. Мои требования в порядке убывания важности приведены ниже. Кто-нибудь имеет опыт работы с коммерческими или бесплатными библиотеками, которые отвечают большинству или всем этим требованиям?

  1. Должен работать в Windows XP и выше. (Но не Win95 / 98 / Me.)

  2. Совместимость с Visual C ++ 2005, где снимок экрана может быть вызван из моего кода. Предпочтительно статическая библиотека, но DLL или COM-объект в порядке. Я бы предпочел не раскошелиться на отдельный EXE, потому что есть некоторые пользователи, которые попытаются вмешаться в наше приложение, и я думаю, что наличие отдельного EXE скриншота делает это слишком простым.

  3. Должен иметь возможность делать полные снимки экрана нескольких систем мониторинга. (Желательно, чтобы клавиша «Экран печати» работала в Windows, создавая растровые изображения, сшитые вместе, но если мне нужно снимать фотографии отдельно и комбинировать их самостоятельно, это приемлемо.)

  4. Должен быть в состоянии правильно захватывать экран, когда клиент удаленного рабочего стола (или любой клиент RDP или ВМ) находится в полноэкранном режиме. (Конечно, он также должен работать, когда RDP находится в оконном режиме, но это не должно быть проблемой, если он не работает, имитируя нажатие клавиши, которое может передаваться на удаленную ОС, а не обрабатываться локально. )

  5. Должен быть в состоянии правильно захватывать экран, когда проигрыватель Windows Media (или любой другой медиаплеер) находится в полноэкранном режиме.

  6. Должен быть в состоянии правильно захватывать экран, когда игра (например, World of Warcraft) находится в полноэкранном режиме.

  7. Было бы неплохо иметь возможность запечатлеть несколько секунд активности пользователя в виде видео.

Ответы [ 4 ]

1 голос
/ 27 сентября 2009

Я не знаю библиотеки, которая бы делала то, что вы хотите.

Если бы мне пришлось кодировать ваши требования, я бы, вероятно, использовал исходный код сервера TightVNC в качестве отправной точки. Я думаю, что у этого есть технология, чтобы сделать все в вашем списке, КРОМЕ ....

Я не уверен, что технически есть НИЧЕГО, что может сделать снимок экрана сеанса удаленного рабочего стола. Подумайте об этом: может быть несколько сеансов удаленного рабочего стола (процесс csrss.exe) с использованием одного и того же физического сервера удаленного рабочего стола. Если бы вы сидели перед машиной и смотрели на видеомонитор, вы бы ничего не увидели. Так что же вы ожидаете захватить? VNC собирает только то, что происходит с «настоящим» видео (не удаленным csrss.exe).

1 голос
/ 28 сентября 2009

Я не знаю, действительно ли это помогает, но лучшие библиотеки изображений доступны из

www.accusoft.com и

www.leadtools.com

Оба поддерживают создание скриншотов, хотя я не знаю, будет ли он должным образом захватывать выходные данные проигрывателя фильмов, отображаемые с помощью графического ускорения или записи фильмов с экрана.

0 голосов
/ 28 сентября 2009

На вашем месте я бы исследовал WindowsClippings , довольно зрелое и расширяемое приложение, написанное на C ++, которое делает именно то, что вам нужно. Он имеет API, который вы можете расширить в соответствии с вашими требованиями, и довольно дешев: 18 $

0 голосов
/ 22 сентября 2009

Некоторые сотрудники нашего офиса используют Magick ++ (библиотека ImageMagick) для создания снимков экрана. Я не знаю всех спецификаций, но вы можете взглянуть на это и посмотреть, соответствует ли оно вашим требованиям.

Надеюсь, это поможет.

С уважением,

Sebastiaan

...