Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi 制作隐藏且不显示的DirectX窗口的屏幕截图';我没有焦点_Winapi_Unity3d_Directx_Screenshot - Fatal编程技术网

Winapi 制作隐藏且不显示的DirectX窗口的屏幕截图';我没有焦点

Winapi 制作隐藏且不显示的DirectX窗口的屏幕截图';我没有焦点,winapi,unity3d,directx,screenshot,Winapi,Unity3d,Directx,Screenshot,如何抓取不在前景中且没有焦点的DirectX窗口的屏幕截图。我想在后台监视应用程序发生的情况,但不切换到它 使用PrintWindow的标准方法不起作用。例如,您可以在Unity应用程序上进行测试。当视口不可见时,实时图形应用程序通常不渲染任何内容。您建议的解决方案通常不起作用。@i不可检测,窗口是否部分可见?或位于虚拟桌面上?您可以尝试使用。如果应用程序在虚拟桌面上运行,则这将不起作用;您必须实现在同一桌面上运行的服务器应用程序。PrintWindow在普通窗口上工作,因为它要求窗口重新绘制自

如何抓取不在前景中且没有焦点的DirectX窗口的屏幕截图。我想在后台监视应用程序发生的情况,但不切换到它


使用
PrintWindow
的标准方法不起作用。例如,您可以在Unity应用程序上进行测试。

当视口不可见时,实时图形应用程序通常不渲染任何内容。您建议的解决方案通常不起作用。@i不可检测,窗口是否部分可见?或位于虚拟桌面上?您可以尝试使用。如果应用程序在虚拟桌面上运行,则这将不起作用;您必须实现在同一桌面上运行的服务器应用程序。PrintWindow在普通窗口上工作,因为它要求窗口重新绘制自身。一般来说,Direct3D应用程序不会像这样按需渲染,它们会不断以尽可能快的速度渲染帧。这意味着他们忽略绘制窗口的请求,无论是通过PrintWindow、WM_PRINT还是WM_PAINT。您必须钩住程序,以便将渲染的窗口存储为绘制的窗口,或者从Windows可能存储该窗口的任何位置复制该窗口。在部分可见窗口的情况下,DWM可能有它,但只有可见部分可从屏幕DC获得。@RossRidge,因此基本上PrintWindow会问“您能将窗口渲染到我的内存缓冲区吗?”DirectX回答“不,我不能在这方面浪费时间”。好啊如何“钩住程序”或复制渲染的窗口内容(Windows将其存储在何处)?当视口不可见时,实时图形应用程序通常不渲染任何内容。您建议的解决方案通常不起作用。@i不可检测,窗口是否部分可见?或位于虚拟桌面上?您可以尝试使用。如果应用程序在虚拟桌面上运行,则这将不起作用;您必须实现在同一桌面上运行的服务器应用程序。PrintWindow在普通窗口上工作,因为它要求窗口重新绘制自身。一般来说,Direct3D应用程序不会像这样按需渲染,它们会不断以尽可能快的速度渲染帧。这意味着他们忽略绘制窗口的请求,无论是通过PrintWindow、WM_PRINT还是WM_PAINT。您必须钩住程序,以便将渲染的窗口存储为绘制的窗口,或者从Windows可能存储该窗口的任何位置复制该窗口。在部分可见窗口的情况下,DWM可能有它,但只有可见部分可从屏幕DC获得。@RossRidge,因此基本上PrintWindow会问“您能将窗口渲染到我的内存缓冲区吗?”DirectX回答“不,我不能在这方面浪费时间”。好啊如何“钩住程序”或复制渲染的窗口内容(Windows将其存储在何处)?当视口不可见时,实时图形应用程序通常不渲染任何内容。您建议的解决方案通常不起作用。@i不可检测,窗口是否部分可见?或位于虚拟桌面上?您可以尝试使用。如果应用程序在虚拟桌面上运行,则这将不起作用;您必须实现在同一桌面上运行的服务器应用程序。PrintWindow在普通窗口上工作,因为它要求窗口重新绘制自身。一般来说,Direct3D应用程序不会像这样按需渲染,它们会不断以尽可能快的速度渲染帧。这意味着他们忽略绘制窗口的请求,无论是通过PrintWindow、WM_PRINT还是WM_PAINT。您必须钩住程序,以便将渲染的窗口存储为绘制的窗口,或者从Windows可能存储该窗口的任何位置复制该窗口。在部分可见窗口的情况下,DWM可能有它,但只有可见部分可从屏幕DC获得。@RossRidge,因此基本上PrintWindow会问“您能将窗口渲染到我的内存缓冲区吗?”DirectX回答“不,我不能在这方面浪费时间”。好啊如何“钩住程序”或复制渲染的窗口内容-Windows将其存储在何处?