시간상 flash8.ocx 에서의 문제점을 해결하고 있지 못하고 있습니다. 신형철님과의 짧은 메세지를 통해서 배운 편법을 적어놓습니다.

AttachAxControl() 함수에서

hr = ::CoCreateInstance(CLSID_ShockwaveFlash, NULL,
CLSCTX_ALL, __uuidof(IShockwaveFlash), (void **)&m_pSF);

부분을 다음과 같이 대체하셔서 강제로 이전버전의 flash.ocx를 로딩하는 방법입니다. 아래 폴더 경로에 flash.ocx 가 존재한다고 가정합니다.

HINSTANCE hInst = ::LoadLibrary(_T(“C:\\windows\\system32\\Macromed\\Flash\\Flash.ocx”));
ATLASSERT(NULL != hInst);

typedef HRESULT (STDAPICALLTYPE * FnGCO)(REFCLSID, REFIID, void **);
FnGCO pfnGCO = (FnGCO)::GetProcAddress(hInst, “DllGetClassObject”);
ATLASSERT(NULL != pfnGCO);

IClassFactory * pcf = 0;
hr = pfnGCO(CLSID_ShockwaveFlash, __uuidof(IClassFactory), reinterpret_cast<void **>(&pcf));
if(FAILED(hr))
return hr;

hr = pcf->CreateInstance(0, __uuidof(IShockwaveFlash), reinterpret_cast<void **>(&m_pSF));

pcf->Release();
pcf = NULL;

Leave a Reply

Your email address will not be published. Required fields are marked *