Stereoscopic Player播放器的控制

简介

Stereoscopic Player播放器的官网提供了VBS的DEMO程序控制播放器,这样就可以打开,停止播放器。这样对于第三的程序控制播放器很方便。但是要在程序代码中获取播放器的状态就不好搞了。这样就不能使用VBS控制了。由于VB脚本是通过调用CreateObject函数来创建COM对象来操作播放器的,这样就可以直接创建COM对象,之后通过IDispatch接口的 Invoke函数来控制播放器。Invoke动态调用的函数的参数和返回类型可以从StereoPlayerInterface.cs文件中获取。下面是获取播放器状态的代码:

int GetPlaybackState()
{
    int rState = -1;
    CLSID clsid;// 通过 ProgID 取得组件的 CLSID
    HRESULT hr = ::CLSIDFromProgID( L"StereoPlayer.Automation", &clsid );
    CComPtr<IUnknown> spUnk;// 由 CLSID 启动组件,并取得 IUnknown 指针
    if(SUCCEEDED(hr))
    {
         hr = ::CoCreateInstance(clsid, NULL, CLSCTX_ALL, IID_IUnknown, (LPVOID *)&spUnk );

        if(SUCCEEDED(hr))
        {
            CComDispatchDriver spDisp( spUnk );
            CComVariant v,vResult;
            auto_ptr<VARIANT> var(new VARIANT);
            var->vt = VT_INT;
            var->dblVal = 0;
            v.vt = VT_BYREF|VT_VARIANT; //引用类型,表示参数的返回值
            v.pvarVal = var.get();
            spDisp.Invoke1(L"GetPlaybackState",&v,&vResult);
            rState = var->intVal;
        }       
    }

    return rState;
}
  这个函数就可以实时获取播放器的状态,如果返回2表示播放器已经停止,0表示正在播放,1表示暂停。

猜你喜欢

转载自blog.csdn.net/a906168402/article/details/49616665