RegistOcx.cpp 2.27 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
#include "stdafx.h"
#include "RegistOcx.h"
#include "MyReader-DUI-MFC.h"

CRegistOcx::CRegistOcx(void)
{
}

CRegistOcx::~CRegistOcx(void)
{
}

BOOL CRegistOcx::RegistOcx()

{
	HINSTANCE hLib = LoadLibrary(theApp.GetCurDir()+_T("PDFView.ocx"));      //指定要注册的ocx文件的路径及文件名。

	if (hLib == NULL)
	{
		//MessageBox("不能载入OCX文件!");
		return FALSE;
	}

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

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

BOOL CRegistOcx::UnRegistOcx()

{
	HINSTANCE hLib = LoadLibrary(theApp.GetCurDir()+_T("PDFView.ocx"));          //指定要注册的ocx文件的路径及文件名。
	if (hLib==NULL)
	{
		//MessageBox(Handle,"不能载入Dll文件!","失败ing..",MB_OK);
		//MessageBox("不能载入OCX文件!");
		return FALSE;
	}

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

	//调用注册函数DllRegisterServer
	if(lpDllEntryPoint!=NULL)
	{
		if(((*lpDllEntryPoint)()))
		{
			//MessageBox(Handle,"调用DllUnRegisterServer失败!","失败ing..",MB_OK);
			//MessageBox("调用DllUnRegisterServer失败!!!");
			FreeLibrary(hLib);
			return FALSE;
		};
		//MessageBox(Handle,"注销成功!","Unreg",MB_OK);
		//MessageBox("OCX注销成功!");
		return TRUE;
	}
	else
		//MessageBox(Handle,"调用DllUnRegisterServer失败!!!","结果",MB_OK);
		//MessageBox("OCX调用DllUnRegisterServer失败!!!");
		return FALSE;
}

BOOL CRegistOcx::IsRegistOcx()

{
	HKEY hKey;
	BOOL bPresent;
	TCHAR szPath[_MAX_PATH];
	DWORD dwRegType;
	DWORD cbData   =   sizeof   szPath   *   sizeof   TCHAR;

	if(RegOpenKeyEx(HKEY_CLASSES_ROOT,_T("PDFVIEW.PDFViewCtrl.1//Clsid"),0,KEY_READ,&hKey)!=ERROR_SUCCESS)
		return FALSE;
	else
		return TRUE;
	//ActiveX.ActiveXControl为控件的名称和内部名称   如"NTGRAPH.NTGraphCtrl.1//CLSID"
}