win32コンソールアプリケーションを空で作る
#include <dshow.h> void main(void) { printf("コンソール表示開始\n"); // COM ライブラリを初期化する。 HRESULT hr = CoInitialize(NULL); if (FAILED(hr)) { printf("COM ライブラリを初期化エラー"); return; } // System Device Enumerator を作成する。 //HRESULT hr; ICreateDevEnum *pSysDevEnum = NULL; hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, (void **)&pSysDevEnum); if (FAILED(hr)) { printf("System Device Enumerator を作成エラー"); MessageBox(0,0,0,0);//コンソールウインドウを閉じないように return; } // ビデオ コンプレッサ カテゴリのクラス列挙子を取得する。 IEnumMoniker *pEnumCat = NULL; hr = pSysDevEnum->CreateClassEnumerator(CLSID_VideoCompressorCategory, &pEnumCat, 0); if (hr == S_OK) { // モニカを列挙する。 IMoniker *pMoniker = NULL; ULONG cFetched; while(pEnumCat->Next(1, &pMoniker, &cFetched) == S_OK) { IPropertyBag *pPropBag; hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pPropBag); if (SUCCEEDED(hr)) { // フィルタのフレンドリ名を取得するには、次の処理を行う。 VARIANT varName; VariantInit(&varName); hr = pPropBag->Read(L"FriendlyName", &varName, 0); if (SUCCEEDED(hr)) { // なんらかの方法で UI に名前を表示する。 wprintf(L"%s\n", varName.bstrVal); } VariantClear(&varName); // フィルタのインスタンスを作成するには、次の処理を行う。 IBaseFilter *pFilter; hr = pMoniker->BindToObject(NULL, NULL, IID_IBaseFilter, (void**)&pFilter); // ここでグラフにフィルタを追加する。 // 後で忘れずに pFilter を解放すること。 pPropBag->Release(); } pMoniker->Release(); } pEnumCat->Release(); } pSysDevEnum->Release(); MessageBox(0,0,TEXT("OK"),0);//コンソールウインドウを閉じないようにする }
CLSID_VideoCompressorCategory は10個(私の環境の場合)
フィルタ カテゴリを変更する場合
フィルタ カテゴリ 一覧
0 件のコメント:
コメントを投稿