2012-01-20 2 views
1

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

Rectangle totalSize = Rectangle.Empty; 

foreach (Screen s in Screen.AllScreens) 
    totalSize = Rectangle.Union(totalSize, s.Bounds); 

Bitmap screenShotBMP = new Bitmap(
    totalSize.Width, totalSize.Height, 
    PixelFormat.Format32bppArgb); 

Graphics screenShotGraphics = Graphics.FromImage(
    screenShotBMP); 

screenShotGraphics.CopyFromScreen(
    totalSize.Location.X, 
    totalSize.Location.Y, 
    0, 0, totalSize.Size, 
    CopyPixelOperation.SourceCopy); 

Я проверил это на двух разных машинах до сих пор, и когда Мир Warcraft работает в полноэкранном режиме одна машина делает снимок экрана WoW, а другой делает снимок рабочего стола. Я бы не удивился, если бы этот код никогда не работал, чтобы сделать снимок экрана WoW, потому что (я полагаю) он использует DirectX для прямой записи на видеокарту. Однако, поскольку он делает, работайте в одном случае, я хотел бы знать, есть ли что-то, что я могу изменить в коде и/или конфигурации машины, чтобы он работал во всех случаях. (По крайней мере, для WoW. Я понимаю, что, вероятно, есть много других игр, которые не будут работать.) Это не похоже на проблему с версией фреймворка, поскольку я скомпилировал свой код для разных версий, и поведение не меняется ,

Машина № 1, которая принимает изображение WoW, работает с 64-разрядным Win7 Professional и имеет версии .NET Framework версии 2.0 до 4.0.

Машина №2, на которой снимается рабочий стол, запускается 32-разрядная версия Win7 Home Premium SP1 с установленными версиями .NET Framework версии 1.0 до 4.0.

Отредактировано для добавления: Еще одна точка данных заключается в том, что если я переключу Machine # 2 с темы рабочего стола Win7 Aero на «классическую» тему, я начну получать WoW-изображения вместо изображений на рабочем столе.

+0

Возможно ли, что Wow имеет другую конфигурацию на двух машинах, например, настройки видео? –

+0

Я только что проверил, и WoW - это 32-битное приложение на обеих машинах. Может ли объяснение, что, поскольку программа работает в 32-битной подсистеме, 64-разрядная среда CLR может захватить ее видео? – jeffm

+0

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

ответ

Смежные вопросы