如何在Flash Player中触发“运行状态”?

时间:2012-06-20 19:39:16

标签: c++ com activex flash

如果我使用窗口激活(在HWND函数中为Flash播放器提供有效GetWindow足以触发此操作),播放器将运行加载的swf文件。但是,如果我使用无窗口激活,则加载的文件不会运行,只会显示第一帧。 This article声称我应该致电

DoVerb(OLEIVERB_SHOW, NULL, (IOleClientSite *)this, 0, NULL, NULL);

但是,这没有任何效果。我做错了什么?

编辑:自从我发了这篇文章后,我发现它返回-2147467259,这不是已知的HRESULT,但肯定不是0.这是什么意思?

经过多次挖掘后,我发现返回值为OLE_E_NOTRUNNING

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。在此电话会议之前,我正在做:

hr = _shockwaveFlash->put_WMode(BSTR("opaque"));

但是我公然忽略了那里的HRESULT。它使Flash Player感到困惑,因为它不是在代码中插入BSTR常量的有效方法(这是一个宽字符串)。正确地:

hr = _shockwaveFlash->put_WMode(L"opaque");

现在它可以正常工作。检查你的HRESULT,孩子:)