.ocx文件可以放在任何目录,包括桌面上。
注册有两种方法: (转)
其一:
注册:RegSvr32 c:/windows/system/文件名.OCX
反注册:RegSvr32 /u c:/windows/system/文件名.OCX
其二:
.ocx文件是一个特殊的动态连接库,输出两个函数一个注册,一个反注册:
注册:DllRegisterServer();
反注册:DllUnregisterServer();
你可以自己作一个RegSvr32.exe分别用LoadLibrary(),GetProcAddress()的方法将两个函数分别调用一次就可以实现.ocx文件的注册/反注册。
在程序中使用函数注册OCX控件:
在程序中注册ActiveX控件(.OCX)的函数
BOOL RegisterOcx(LPCTSTR OcxFileName)
{
LPCTSTR pszDllName = OcxFileName ; //ActiveX控件的路径及文件名
HINSTANCE hLib = LoadLibrary(pszDllName); //装载ActiveX控件
if (hLib < (HINSTANCE)HINSTANCE_ERROR)
{
return FALSE ;
}
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress(hLib,_T("DllRegisterServer")); //获取注册函数DllRegisterServer地址
if(lpDllEntryPoint!=NULL) //调用注册函数DllRegisterServer
{
if(FAILED((*lpDllEntryPoint)()))
{
FreeLibrary(hLib);
return FALSE ;
}
return TRUE ;
}
else
return FALSE ;
}
//----------------------------------
在程序中注销ActiveX控件(.OCX)的函数
BOOL UnRegisterOcx(LPCTSTR OcxFileName)
{
LPCTSTR pszDllName = OcxFileName ; //ActiveX控件的路径及文件名
HINSTANCE hLib = LoadLibrary(pszDllName); //装载ActiveX控件
if (hLib < (HINSTANCE)HINSTANCE_ERROR)
{
return FALSE ;
}
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress(hLib,_T("DllUnregisterServer")); //获取注册函数DllUnregisterServer地址
if(lpDllEntryPoint!=NULL) //调用注册函数DllUnregisterServer
{
if(FAILED((*lpDllEntryPoint)()))
{
FreeLibrary(hLib);
return FALSE ;
}
return TRUE ;
}
else
return FALSE ;
}