Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.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
C++ 视频窗口截图 在我的应用程序中,我使用Media基金会来从一个摄像头渲染视频。带有视频的窗口是应用程序窗口的一部分,我想从整体上对其进行编程截图。现在我尝试使用经典的截图方法(将窗口的dc复制到位图),但视频窗口被排除在图片之外_C++_Winapi_Screenshot_Direct3d_Ms Media Foundation - Fatal编程技术网

C++ 视频窗口截图 在我的应用程序中,我使用Media基金会来从一个摄像头渲染视频。带有视频的窗口是应用程序窗口的一部分,我想从整体上对其进行编程截图。现在我尝试使用经典的截图方法(将窗口的dc复制到位图),但视频窗口被排除在图片之外

C++ 视频窗口截图 在我的应用程序中,我使用Media基金会来从一个摄像头渲染视频。带有视频的窗口是应用程序窗口的一部分,我想从整体上对其进行编程截图。现在我尝试使用经典的截图方法(将窗口的dc复制到位图),但视频窗口被排除在图片之外,c++,winapi,screenshot,direct3d,ms-media-foundation,C++,Winapi,Screenshot,Direct3d,Ms Media Foundation,PS1:当我使用打印屏幕按钮拍摄整个应用程序的照片时,它可以工作。包括视频窗口 PS2:据我所知,媒体基金会使用Direct3D 11来渲染视频。 你应该使用桌面复制API来捕捉截图。复制DC是一种传统的方法,而不是经典的方法,它可以有充分的理由排除视频部分 请注意,如果播放机或应用程序明确要求将内容视为受保护的内容(例如,对于支持DRM的视频播放应用程序或支持DRM的内容的媒体播放机),则即使是桌面复制也可能会排除部分内容。除非使用筛选驱动程序,否则不可能。谢谢您的回答。但我一点也不聪

PS1:当我使用打印屏幕按钮拍摄整个应用程序的照片时,它可以工作。包括视频窗口


PS2:据我所知,媒体基金会使用Direct3D 11来渲染视频。

你应该使用桌面复制API来捕捉截图。复制DC是一种传统的方法,而不是经典的方法,它可以有充分的理由排除视频部分


请注意,如果播放机或应用程序明确要求将内容视为受保护的内容(例如,对于支持DRM的视频播放应用程序或支持DRM的内容的媒体播放机),则即使是桌面复制也可能会排除部分内容。

除非使用筛选驱动程序,否则不可能。谢谢您的回答。但我一点也不聪明。有没有简单的方法来调用Windows在按下PrintScreen键后调用的“屏幕截图函数”?Windows是否使用此桌面复制API?我不知道打印屏幕处理程序的确切功能,因此它不一定是您可用的方法。众所周知,桌面复制工作正常,然后可以使用WIC API将图像保存到文件中(其他选项也可用,因为在某些情况下,您将持有32位RGB像素)。桌面复制API的哪种方法仅用于拍摄一个窗口(或最终整个桌面)的照片。我所能找到的是,我应该使用AcquireNextFrame方法来获取我无法获取的界面。
AcquireNextFrame
为您获取一个监视器的图像,而不是窗口和桌面的图像。我上面链接的问题给出了使用此方法获取接口所使用的API的提示。