• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 怎么编写控件的反安装程序啊

怎么编写控件的反安装程序啊

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了网上报税控件程序,英塔ca控件和驱动程序,安徽ca控件和驱动程序,捷易通控件补丁程序,企业网银控件程序等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 怎么编写控件的反安装程序啊
描述:

我做了个web控件,在频繁的更新测试,有时后会发生怎么也
御载不了原来大的版本的控件,最后只好载注册表查找控件
的clsid,然后把注册表中的这些项删掉,然后浏览web页面的
时候就会重装控件,并且正常。。。。。
怎么编写控件的反安装程序啊,不用手动的去清楚注册表。。


解决方案1:

HINSTANCE hIn = Loadlibrary("path and ocx file name");
if(NULL == hIn)
  return;
FARPROC proc;
proc = GetProcAddress(hIn,"DLLURegisterServer");
if(NULL!=proc)
{
   if(FAILED((*proc)()))
      return
   else
      MessageBox("uregister success!");
}
else
   return;
这个是VC里的反注册
如果嫌麻烦,就可以直接在“.bat”文件里面写一句“unregsrv /u 路径+控件名”,运行即可,或者在运行
里写上面的语句也一样可行。

解决方案2:

可以用shellexecute 执行regsvr32 /u
也可以用注册表函数删除

解决方案3:

typedef DWORD(CALLBACK * PREG)(void);
void CRegOCXDlg::OnReg() 
{
// TODO: Add your control notification handler code here
TCHAR AppFullPath[_MAX_PATH];
GetModuleFileName(NULL,AppFullPath,_MAX_PATH);
CString m_AppPath;
m_AppPath=AppFullPath;
int iAppPosition;
iAppPosition=m_AppPath.ReverseFind('\\');
m_AppPath=m_AppPath.Mid(0,iAppPosition+1);
char pOCXPath[100];
PREG lpDllEntryPoint;
HINSTANCE hLib;
CString m_OCXFileName;
if(m_OcxList.GetCurSel()==CB_ERR)
{
m_OCXFileName="NULL";
(CButton*)GetDlgItem(IDC_REG)->EnableWindow(FALSE);
}
else
{
m_OcxList.GetLBText(m_OcxList.GetCurSel(),m_OCXFileName);
(CButton*)GetDlgItem(IDC_REG)->EnableWindow(TRUE);
}
if(m_OCXFileName=="NULL")
{
(CButton*)GetDlgItem(IDC_REG)->EnableWindow(FALSE);
}
else
{
sprintf(pOCXPath,"%s%s",m_AppPath,m_OCXFileName);
hLib=LoadLibrary(pOCXPath);
if(hLib)
{
                            //注意这里,将函数地址DllRegisterServer改为DllUnregisterServer就可以了
lpDllEntryPoint=(PREG)GetProcAddress(hLib,_T("DllRegisterServer"));
if(lpDllEntryPoint!=NULL)
{
(*lpDllEntryPoint)();
AfxMessageBox("组件注册初始成功!",MB_ICONINFORMATION);
FreeLibrary(hLib);
}
else
{
AfxMessageBox("组件注册初始失败!",MB_ICONINFORMATION);
}
}
}
}

解决方案4:

到http://www.installsite.org/看看是否有相关的例子!


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 自己编写开发控件程序无法运行
  • 控件发布在网上后,如何才能自动更新
  • 怎么编写控件的反安装程序啊

相关文章

  • 2017-06-04 利用IOleWindow打开模态窗口?
  • 2017-06-05 请问如何检查系统中是否有某个进程在运行?调用那个函数?
  • 2017-06-04 如何提高数据库高峰时访问的并发能力
  • 2017-06-04 有个事情没想明白,接口1的输出参数是接口2时,接口2通常怎么创建实例?
  • 2017-06-05 为什么我在主线程里故意写的非法操作代码不能终止这个主线程所创建的线程?
  • 2017-06-04 大侠们,小弟有问题要问,小弟在线等
  • 2017-06-04 如何通过com接口传递不定长,个数可变的一批数据呢?????
  • 2017-06-05 如何动态改变一个ActiveX控件的container或者更改他的父窗口,使其可以被调整尺寸?
  • 2017-06-05 在DLL中定义的消息,编译时提示该消息没定义,咋回事?
  • 2017-06-05 线程池的问题,请大虾帮忙

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 请问非BHO的程序,如何获取IE浏览器下载一个网页的事件?
    • 请教哪有学习ActiveX(vc开发)的电子书下载?
    • 哪儿有在静态DLL中建立类并在其他地方调用的例子?
    • DCOM的问题
    • 如何创建可以由VB调用的DLL
    • 请问ActiveX控件的基本问题
    • 带有socket的线程同步问题,如何搞定?
    • 关于dll的一个简单问题
    • ---如何对一个二进制文件进行比特级读写操作---
    • 我想写一个网页用的ActiveX

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有