在windows系统中,可以通过Regsvr32来实现注册ocx或者dl,

编程时,调用Regsvr32来注册,却不能正常执行。尤其是在Win7系统中,需要管理员身份才能运行。

使用下面的代码则能正常注册。

  1. //注册
  2. function RegisterDllServer(FileName: string): boolean;
  3. var
  4. nDllAddr: integer;
  5. bstr: string;
  6. ProcAddr: Pointer;
  7. str: PAnsiChar;
  8. begin
  9. Result := False;
  10. if not FileExists(FileName) then
  11. exit;
  12. nDllAddr:=LoadLibrary(PWideChar(FileName));
  13. if nDllAddr <> 0 then
  14. begin
  15. bstr:='DllRegisterServer'+chr(0);
  16. str := PAnsiChar(AnsiString(bstr));
  17. ProcAddr := GetProcAddress(nDllAddr,str);
  18. if ProcAddr<>nil then
  19. begin
  20. CallWindowProc(ProcAddr,nDllAddr,0,0,0);
  21. Result := True;
  22. end;
  23. FreeLibrary(nDllAddr);
  24. end;
  25. end;
  26. //反注册
  27. function UnRegisterDllServer(FileName: string): boolean;
  28. var
  29. nDllAddr: integer;
  30. bstr: string;
  31. ProcAddr: Pointer;
  32. str: PAnsiChar;
  33. begin
  34. Result := False;
  35. if not FileExists(FileName) then
  36. exit;
  37. nDllAddr:=LoadLibrary(PWideChar(FileName));
  38. if nDllAddr <> 0 then
  39. begin
  40. bstr:='DllUnregisterServer'+chr(0);
  41. str := PAnsiChar(AnsiString(bstr));
  42. ProcAddr := GetProcAddress(nDllAddr,str);
  43. if ProcAddr<>nil then
  44. begin
  45. CallWindowProc(ProcAddr,nDllAddr,0,0,0);
  46. Result := True;
  47. end;
  48. FreeLibrary(nDllAddr);
  49. end;
  50. end;

http://blog.csdn.net/shuaihj/article/details/6243360

选择目录

    1. function selectdir: string; //如果取消取返回为空,否则返回选中的路径
    2. var
    3. Info: TBrowseInfo;
    4. IDList: pItemIDList;
    5. Buffer: PChar;
    6. begin
    7. result := '';
    8. Buffer := StrAlloc(MAX_PATH);
    9. with Info do
    10. begin
    11. hwndOwner := GetActiveWindow;   //少了这句,浏览目录选择框不会跳出来的
    12. pidlRoot := nil; //起始位置,缺省为我的电脑
    13. pszDisplayName := Buffer; //用于存放选择目录的指针
    14. lpszTitle := '请选择路径:'; //对话框提示信息
    15. ulFlags := BIF_RETURNONLYFSDIRS or BIF_BROWSEINCLUDEFILES;
    16. //选择参数,此处表示显示目录和文件,如果只显示目录则将后一个去掉即可
    17. lpfn := nil; //指定回调函数指针
    18. lParam := 0; //传递给回调函数参数
    19. IDList := SHBrowseForFolder(Info); //读取目录信息
    20. end;
    21. if IDList <> nil then
    22. begin
    23. SHGetPathFromIDList(IDList, Buffer); //将目录信息转化为路径字符串
    24. result := strpas(Buffer);
    25. end;
    26. StrDispose(buffer);
    27. end;

http://blog.csdn.net/earbao/article/details/9296411

delphi中用代码实现注册Ocx和Dll(有点怪异,使用CallWindowProc来调用指定函数DllRegisterServer)的更多相关文章

  1. windows7 64位下运行 regsvr32 注册ocx或者dll的方法

    来源:转载   it won't work for you unless you have some form of Visual Basic tools loaded on your system: ...

  2. VC++如何在程序中用代码注册和卸载ocx控件(代码)

    方法一:在dos或Windows命令行下运行:regsvr32 ocxname.ocx 注册 示例:regsvr32 netshare.ocx     //注册netshare.ocx控件regsvr ...

  3. Activex、OLE、COM、OCX、DLL之间区别、联系[转]

    转自:http://baike.baidu.com/view/393671.htm 创建COM:http://blog.csdn.net/henry000/article/details/700839 ...

  4. Activex、OLE、COM、OCX、DLL之间的区别(转)

    熟悉面向对象编程和网络编程的人一定对ActiveX.OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的.在具体介绍它们的关系之间,我们还是先明确组件(Co ...

  5. Activex、OLE、COM、OCX、DLL之间有什么区别?

    来源:http://www.blogjava.net/Jack2007/archive/2008/04/27/196392.html         熟悉面向对象编程和网络编程的人一定对ActiveX ...

  6. 【转载】OCX和DLL的区别

    原文:http://blog.csdn.net/scucj/article/details/852181 一.关于DLL的介绍      DLL,动态链接库,Dynamic Link Library的 ...

  7. OCX和DLL的区别

    转自:http://blog.csdn.net/scucj/archive/2006/06/29/852181.aspx OCX和DLL的区别 一.关于DLL的介绍      DLL,动态链接库,Dy ...

  8. C#注册OCX控件

    注意 COM组件注册到注册表中的位置,是CLSID还是TypeLib 注册方法 代码执行 //声明注册方法 [DllImport("C:\\Windows\\barcodex.ocx&quo ...

  9. RegSvr32注册OCX时报错

    RegSvr32注册OCX时报错. 错误1: 模块“dsoframer2007.ocx”已加载,但对 DllRegisterServer 的调用失败,错误代码为 0x80070005. 有关此问题的详 ...

随机推荐

  1. 动态网页爬取例子(WebCollector+selenium+phantomjs)

    目标:动态网页爬取 说明:这里的动态网页指几种可能:1)需要用户交互,如常见的登录操作:2)网页通过JS / AJAX动态生成,如一个html里有<div id="test" ...

  2. CloudStack全局配置參数

    參数 描写叙述 类型 默认值 account.cleanup.interval 清除用户账户所须要等待的时间(秒) 整数 86400 agent.lb.enabled If agent load ba ...

  3. 使用内容提供者和xml备份联系人

    1.通过内容提供者获取联系人信息 package com.ithaimazyh.readcontact; import java.util.ArrayList; import java.util.Li ...

  4. 总线接口与计算机通信(一)I2C总线

    1.  I2C总线的基本概念    1)发送器(Transmitter):发送数据到总线的器件    2)接收器(Receiver):从总线接收数据的器件    3)主机(Master):初始化发送. ...

  5. Charles_N:HTTP请求响应监听工具

    Charles:HTTP请求响应监听工具使用说明.doc   1.    介绍 Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器.它允许一个开发者查看所有连接互联网的HTTP通信 ...

  6. AspNet MVC4 教学-22:Asp.Net MVC4 Partial View 技术高速应用Demo

    A.创建Basic类型的MVC项目. B.Model文件夹下,创建文件: LoginModel.cs: using System; using System.Collections.Generic; ...

  7. Bitmap Style Designer非官方说明

    Bitmap Style Designer Bitmap Style Designer给我的第一印象就是简陋,估计也是为了赶工.大致体会了一下,还是能够使用.因为目前没有对此有比较详细的中文资料,就把 ...

  8. 14.10.2 File Space Management 文件空间管理:

    14.10.2 File Space Management 文件空间管理: 数据文件 你定义在配置文件形成了InnoDB的系统表空间, 文件是逻辑连接形成表空间,没有条带化使用. 你不能定义你的表在表 ...

  9. 基于Greenplum Hadoop分布式平台的大数据解决方案及商业应用案例剖析

    随着云计算.大数据迅速发展,亟需用hadoop解决大数据量高并发访问的瓶颈.谷歌.淘宝.百度.京东等底层都应用hadoop.越来越多的企 业急需引入hadoop技术人才.由于掌握Hadoop技术的开发 ...

  10. 基于visual Studio2013解决C语言竞赛题之1059最大平台

       题目 解决代码及点评 /* 功能:编写求最大平台问题的程序. 有n个整数a1,a2, ... an, 若满足a1≤a2≤ ... ≤ an , 则认为在这n个数中有最大平台.在这种情 ...