Я бы хотел сфотографировать полноэкранную игру Direct3D. Я знаю, что мне нужно создать «оверлей», который сложнее в c #, и я обнаружил, что использование printscreen (и его вставка в mspaint) захватывает окно игры.
Я получил этот нестабильный код:
try
{
SendKeys.SendWait("{PRTSC}");
Thread.Sleep(100);
if (Clipboard.ContainsImage())
return Clipboard.GetImage();
}
catch (Exception)
{
throw;
}
Bitmap bitmap = new Bitmap(1, 1);
return bitmap;
Этот код иногда работает, иногда он генерирует ExternalException, а иногда и Clipboard.ContainsImage () возвращает false, и он просто возвращает изображение размером 1,1.
Я хотел бы попытаться улучшить этот код, чтобы мне не пришлось полагаться на время, необходимое для копирования чего-либо в буфер обмена (с помощью thread.sleep (20000) это будет работать, но этот код просто часть большего кода, который выполняется каждые 800 мс).
Так что мне нужны идеи о том, как более надежно отправить ключи или получить тот метод, который использует printscreen.