QQ登录

只需一步,快速开始

210上位机VC MFC实现COM控件OCX的注册与卸载

[ 复制链接 ]
210上位机VC MFC实现COM控件OCX的注册与制裁.jpg
210上位机VC MFC实现COM控件OCX的注册与卸载
功能展示
OCX控件是很常用的一种插件,比如优酷都有对外提供OCX控件,但使用OCX控件得注册才能使用,OCX控件可以用鼠标手动注册也可以用代码实现自动注册,我们当前例程实现了OCX或DLL的注册功能,选择要注册的COM控件后,就可进行COM控件的注册与卸载,效果如图;
要点提示
首先OCX控件得调用函数LoadLibrary()进行加载到程序中,然后才能够动态获取控件内DllRegisterServer()与DllUnregisterServer()函数进行控件的注册与卸载;
一.LoadLibrary 函数原型:HMODULE WINAPI LoadLibrary( _In_LPCTSTR lpFileName);
返回值及参数 说明:
返回为Long类型,成功则返回库模块的句柄,零表示失败。调用函数GetLastError()获取具体错误代码;
lpLibFileName String,指定要载入的动态链接库的名称。采用与CreateProcess函数的lpCommandLine参数指定的同样的搜索顺序,一旦不需要,用FreeLibrary函数释放DLL;
二.函数DllRegisterServer()DllUnregisterServer()指针的动态获取可以用函数GetProcAddress()实现;
GetProcAddress函数原型:
FARPROC GetProcAddress(HMODULE hModule, LPCSTRlpProcName );
参数含义:
hModule
[in] 包含此函数的DLL模块的句柄。LoadLibrary、AfxLoadLibrary 或者GetModuleHandle函数可以返回此句柄。
lpProcName
[in] 包含函数名的以NULL结尾的字符串,或者指定函数的序数值。如果此参数是一个序数值,它必须在一个字的底字节,高字节必须为0。
如果函数调用成功,返回值是DLL中的输出函数地址。如果函数调用失败,返回值是NULL。可以调用函数GetLastError()获得具体错误代码;
实现功能
1.新建基于对话框的应用程序
2.拖拽一编辑框ID为IDC_EDIT1用于显示要注册的OCX控件,拖拽三个按钮控件<选择要注册的COM控件><注册选择的COM控件><制裁选择的COM控件><卸载选择的COM控件>关联函数,三个函数体为:
  1. void CGkbc8Dlg::OnRegister()
  2. {
  3.         CString sText;
  4.         GetDlgItemText(IDC_EDIT1,sText);
  5.         if(sText.IsEmpty())//没有选择 OCX返回
  6.                 return;
  7.         HMODULE hModule=::LoadLibrary(sText);
  8.         if(hModule == NULL)
  9.         {
  10.                 MessageBox("加载ocx控件失败");
  11.                 return;
  12.         }
  13.         typedef  int ( __stdcall *pFunDllRegisterOCX)(void);
  14.         pFunDllRegisterOCX DllRegisterServer = (pFunDllRegisterOCX)GetProcAddress(hModule,"DllRegisterServer");
  15.         if(DllRegisterServer != NULL)
  16.         {
  17.                 HRESULT hResult = DllRegisterServer();
  18.                 if(hResult == S_OK)
  19.                         MessageBox("ocx控件注册成功");
  20.                 else
  21.                         MessageBox("ocx控件注册失败");
  22.         }
  23.         FreeLibrary(hModule);
  24. }
复制代码
  1. void CGkbc8Dlg::OnChoose()
  2. {
  3.         CFileDialog Dlg(TRUE,".OCX",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"ocx控件(.ocx)|*.ocx;*.dll||");
  4.         if(Dlg.DoModal() == IDOK)
  5.                 SetDlgItemText(IDC_EDIT1,Dlg.GetPathName());
  6. }
  7. void CGkbc8Dlg::OnUnregister()
  8. {
  9.         CString sText;
  10.         GetDlgItemText(IDC_EDIT1,sText);
  11.         if(sText.IsEmpty())//没有选择 OCX返回
  12.                 return;
  13.         HMODULE hModule=::LoadLibrary(sText);
  14.         if(hModule == NULL)
  15.         {
  16.                 MessageBox("加载ocx控件失败");
  17.                 return;
  18.         }
  19.         //<>
  20.         typedef  int ( __stdcall *pFunDllUnregisterOCX)(void);
  21.         pFunDllUnregisterOCX DllUnregisterServer = (pFunDllUnregisterOCX)GetProcAddress(hModule,"DllUnregisterServer");
  22.         if(DllUnregisterServer != NULL)
  23.         {
  24.                 HRESULT hResult = DllUnregisterServer();
  25.                 if(hResult == S_OK)
  26.                         MessageBox("ocx控件卸载成功");
  27.                 else
  28.                         MessageBox("ocx控件卸载失败");
  29.         }
  30.         FreeLibrary(hModule);
  31. }
复制代码
要注意的是OCX控件注册在WIN7得获得管理员权限才能成功,权限的具体获得方法视频演示会介绍;
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:210.上位机VC MFC实现COM控件OCX的注册与制裁.rar 
文件大小:160.07 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索