您的位置:首页 > 其它

在MFC程序中如何注册/注销/检测ActiveX控件(.OCX)

2014-05-26 15:57 369 查看
一、注册ActiveX控件

BOOL RegistOcx()
{
//装载ActiveX控件
HINSTANCE hLib = LoadLibrary(_T("C:\\Windows\\System32\\Macromed\\Flash\\Flash.ocx"));
if (hLib < (HINSTANCE)HINSTANCE_ERROR)
{
//MessageBox(_T("不能载入OCX文件!"));
return FALSE;
}

//获取注册函数DllRegisterServer地址
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress(hLib,"DllRegisterServer");//注意这里是DllRegisterServer

//调用注册函数DllRegisterServer注册
if(lpDllEntryPoint!=NULL)
{
if(FAILED((*lpDllEntryPoint)()))
{
//MessageBox(_T("调用DllRegisterServer失败!"));
FreeLibrary(hLib);
return FALSE;
}
//MessageBox(_T("OCX注册成功!"));
return TRUE;
}
else
{
//MessageBox(_T("OCX注册失败!"));
return FALSE;
}
}

二、注销ActiveX控件

BOOL UnRegistOcx()
{
//装载ActiveX控件
HINSTANCE hLib = LoadLibrary(_T("C:\\Windows\\System32\\Macromed\\Flash\\Flash.ocx"));
if (hLib < (HINSTANCE)HINSTANCE_ERROR)
{
//MessageBox(_T("不能载入OCX文件!"));
return FALSE;
}

//获取注销函数DllUnregisterServer地址
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress(hLib,"DllUnregisterServer");//注意这里是DllUnregisterServer

//调用注销函数DllUnregisterServer注销
if(lpDllEntryPoint!=NULL)
{
if(FAILED((*lpDllEntryPoint)()))
{
//MessageBox(_T("调用DllUnregisterServer失败!"));
FreeLibrary(hLib);
return FALSE;
}
//MessageBox(_T("OCX注销成功!"));
return TRUE;
}
else
{
//MessageBox(_T("OCX注销失败!"));
return FALSE;
}
}

三、检测ActiveX控件

BOOL IsRegistOcx()
{
HKEY hKey;
if(RegOpenKeyEx(HKEY_CLASSES_ROOT,_T("CLSID\\{D27CDB6E-AE6D-11CF-96B8-444553540000}\\InprocServer32"),0,KEY_READ,&hKey)!=ERROR_SUCCESS)
{
//MessageBox(_T("OCX没有注册!!!"));
return FALSE;
}
else
{
//MessageBox(_T("OCX已经注册!!!"));
return TRUE;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息