回 帖 发 新 帖 刷新版面

主题:[讨论]我快急死了,高手请进来看看(回复给分)[我已经自己解决,不再给分,谢谢大家关注]

下面的代码目的是为了控制,替换网页中的Flash内容,能成功取得取得Movie属性的值,但设置新值时不能成功,返回值是 DISP_E_MEMBERNOTFOUND,请高手指教。

IDispatch  *pDispatchNow;
pFlashObjNow->get_object(&pDispatchNow);//得到Flash对象的IDispatch接口
DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0};
VARIANT   var;   
BSTR bstrName(   L"movie"   );   
DISPID dispid; 
OLECHAR  *pbName = bName; 
unsigned int ErrValue;
VARIANTARG PutVal;
PutVal.vt = VT_BSTR;
PutVal.bstrVal = _T("Image/head.swf");
DISPPARAMS PutArgs;
PutArgs.cArgs = 1;
PutArgs.rgdispidNamedArgs = NULL;
PutArgs.rgvarg = &PutVal;
PutArgs.cNamedArgs =0;
if(S_OK==pDispatchNow->GetIDsOfNames(IID_NULL, &pbName, 1, LOCALE_USER_DEFAULT, &dispid))
{
    //获取原Flash的URL
   if(S_OK == pDispatchNow->Invoke(dispid,  IID_NULL,  LOCALE_USER_DEFAULT,  DISPATCH_PROPERTYGET,  &dispparamsNoArgs,  &var,  NULL,  &ErrValue ))
     {
        T1 = _T("原SWF:");
        T1 += var.bstrVal;
        AfxMessageBox(T1);
     }

    //设置新
    HRESULT hrSet;
    hrSet = pDispatchNow->Invoke(dispid,  IID_NULL,  LOCALE_USER_DEFAULT,  DISPATCH_PROPERTYPUT,  &PutArgs,  NULL,  NULL,  &ErrValue );
    if(S_OK == hrSet)
       {
          T1 = _T("新SWF:");
          T1 += var.bstrVal;
          AfxMessageBox(T1);
       }
       else
       {
          T1.Format(_T("%d"),hrSet);
          AfxMessageBox( T1 );
       }
}; 

回复列表 (共16个回复)

沙发

没人理睬,自己顶一下,免得沉了

板凳

高手们都出来啊逛逛啊

3 楼

高手们都出来啊逛逛啊

4 楼


路过。。。。爱莫能助-。-

5 楼

路过,不会,等待高手。

6 楼

COM?。。。看看函数调用栈从哪里死掉了吧

7 楼


你好 看看你的t1变量怎么声明的 ,不明白,还有很可能由于你的t1地址被覆盖了,所以不能找到. 自己感觉啊

8 楼

晕...

9 楼

呵呵,尽管都说的不对,还是按约定评分

10 楼

不好意思我看不懂。等高手把..

我来回复

您尚未登录,请登录后再回复。点此登录或注册