将DirectShowfiltergraphics转储为图像或文本文件

对于debugging/日志logging的目的,我想看看我的filter图表在客户端的PC上看起来。 为此,我添加了将图转储到一个graphedit文件的代码,但问题是只能在安装了完全相同的filter的PC上查看。 有没有办法将graphics转储为图像(如图片截图),甚至只是一个文本文件(filter1> filter2等)?

没有内置的转储图形的功能。 你所提到的并不完全是图的转储,而是它的持续状态。 要发现有效的拓扑结构,请执行以下操作:

  1. 在代码中枚举自己的过滤器和连接(记录到文件等)
  2. 将图形放在代码中运行的对象表中,然后连接外部工具(GraphEdit,GraphStudioNext等),包括生成文本/图片进一步共享; 请注意,您需要Windows SDK中的proppage.dll才能运行
  3. [临时]安装(与regsvr32 COM寄存器)为已建成的应用程序做#2的DirectShowSpy ,这是不需要添加代码发布图
    • 如果你的代码可以检测间谍的存在,那么你可以跳过proppage.dll的事情,并从代码,连接,媒体类型等产生广泛的文字图形转储 – 详细信息和C#代码片段
    • 或者,支持DirectShowSpy的代码可能会显式地加载间谍,并附加一个图形来获取文本信息,在这种情况下,不需要间谍注册(间谍不适用于生产环境;那么注册需要管理权限,否则不需要)
    • 当注册时,即使没有proppage.dll,也会将图形活动(包括拓扑信息)记录到CSIDL_COMMON_APPDATACLSID_APPDATA目录中的DirectShowSpy.log文件。