Скриншот игры с использованием PrintWindowC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Скриншот игры с использованием PrintWindow

Сообщение Anonymous »

Мне нужен способ сфотографировать окно игры (программно на C#), которое можно было бы скрыть за другими окнами или сделать неактивным. Я пытаюсь использовать для этого PrintWindow, но получаю только рамку окна игры. Самой игры не видно. Пожалуйста, помогите мне, если кто-нибудь знает, что происходит.

Код: Выделить всё

internal static class Screenshot
{
[StructLayout(LayoutKind.Sequential)]
internal struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}

[DllImport("user32.dll")]
public static extern bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, uint nFlags);

[DllImport("user32.dll")]
public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);

[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

public static Bitmap CaptureGameProcess( string windowTitle, string screenShotSavePath)
{
IntPtr handle = FindWindow(null, windowTitle);

// Get the dimensions of the window
RECT rect;
GetWindowRect(handle, out rect);

int width = rect.Right - rect.Left;
int height = rect.Bottom - rect.Top;

// Create a bitmap to store the screenshot
Bitmap bmp = new Bitmap(width, height, PixelFormat.Format32bppArgb);

// Capture the window
using (Graphics gfxBmp = Graphics.FromImage(bmp))
{
IntPtr hdcBitmap = gfxBmp.GetHdc();
PrintWindow(handle, hdcBitmap, 0);
gfxBmp.ReleaseHdc(hdcBitmap);
}

return bmp;
}
}
Amazon Adventure — здесь есть рамка
Изображение

Кислород не включен — здесь просто белое изображение
Изображение

Скриншот игры Half-Life показывает просто черное окно.

Подробнее здесь: https://stackoverflow.com/questions/792 ... rintwindow
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Скриншот неактивного окна PrintWindow + win32gui
    Anonymous » » в форуме Python
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • PowerShell C# printWindow () Вывод не работает
    Anonymous » » в форуме C#
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • PrintWindow Отправить сообщение WM_PAINT или WM_PRINT?
    Anonymous » » в форуме C++
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Камера для одиночной игры работает, но камера для многопользовательской игры не отслеживает и движения не синхронизируют
    Anonymous » » в форуме C#
    0 Ответы
    56 Просмотры
    Последнее сообщение Anonymous
  • Шахматная нейронная сеть хорошо играет в начале/середине игры, но плохо в конце игры [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»