我想拍一张全屏 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 使用的方法的想法。