<h2>确定复制代码所需的值</h2>
<p>再看一眼你文章末尾的代码节选,我意识到你只需要IID,而不需要<code>IAMVideoProcAmp</code>的CLSID来获取它的实例。在</p>
<p>查看<a href="https://github.com/Alexpux/mingw-w64/blob/master/mingw-w64-headers/include/strmif.h" rel="nofollow noreferrer">this source of strmif.h</a>的第8733行,它是接口所需的头,我发现<code>IID_IAMVideoProcAmp</code>是<code>C6E13360-30AC-11d0-A18C-00A0C9118956</code>。在</p>
<p>在strmif.h的这一节之上,您可以确定哪些整数对应于<code>tagVideoProcAmpProperty</code>枚举中的哪些属性,例如<code>0</code>对应于{<cd6>}。在strmif.h的这一节下面,您可以确定哪些整数对应于<code>IAMVideoProcAmpVtbl</code>VTable中的哪些函数,例如<code>3</code>表示{<cd9>}。我不熟悉如何在Python中与COM对象进行交互,但在爪哇中,您需要确定这些属性和函数索引,以便复制演示如何获取^ {CD10}}实例的C++代码摘录。在</p>
<h2>获取<code>IAMVideoProcAmp</code>的实例</h2>
<P>正如您可能注意到的,C++代码摘录在^ { < CD13>}上调用^ {< CD12>},并注意到您需要“查询IAMVIEW OPROAMP接口的捕获过滤器”。
<blockquote>
<p>To create a DirectShow capture filter for the device, call the IMoniker::BindToObject method to get an IBaseFilter pointer. Then call IFilterGraph::AddFilter to add the filter to the filter graph:</p>
<pre><code>IBaseFilter *pCap = NULL;
hr = pMoniker->BindToObject(0, 0, IID_IBaseFilter, (void**)&pCap);
if (SUCCEEDED(hr))
{
hr = m_pGraph->AddFilter(pCap, L"Capture Filter");
}
</code></pre>
</blockquote>
<p>现在您已经知道了如何获取<code>pCap</code>,您注意到您需要一个名为<code>pMoniker</code>的东西,它在同一篇文章的前面已经定义。代码相当长,所以我在这里省略了它。在</p>
<h2>在Python中完成所有这些</h2>
<P>正如我之前提到的,我从来没有使用任何Python COM库,所以我不能轻易地举一个例子,但是你的目标应该是用Python复制C++实例中的函数调用来获取一个^ {CD1>}的实例,并根据需要修改它们。在</p>