精华内容
下载资源
问答
  • ocx转换成dll的net版本如何更改 用vs的开发人员命令提示工具 aximp 将ocx转换成dll ,但是转换的版本是.net4.0的,如何转换.net3.5的啊,求救啊
  • ocx文件转换成C#程序引用的DLL文件的办法,需要的朋友可以参考一下
  • ocxdll

    千次阅读 2018-04-08 14:12:26
    本例使用的是vs20101.打开VS2010命令提示符(以管理员权限运行,否则有可能报错)将ocx文件拷贝到VS安装目录下的VC文件夹下2....将生成的两个dll文件拷贝到项目中注:虽然将ocxdll但是在没...

    本例使用的是vs2010

    1.打开VS2010命令提示符(以管理员权限运行,否则有可能报错)

    将ocx文件拷贝到VS安装目录下的VC文件夹下

    2.注册ActiveX控件(转换前一定要先注册,注册成功后会提示注册成功)

    regsvr32 文件.ocx

    3.编译OCX文件

    aximp 文件.ocx

    生成两个dll文件,项目中引用Ax前缀的文件

    4。将生成的两个dll文件拷贝到项目中


    注:虽然将ocx转成了dll但是在没有注册过的电脑上运行引用ocx转dll的项目还是会提示注册。

    展开全文
  • ocx文件转换成C#程序引用的DLL文件的办法 将ocx文件转换成C#程序引用的DLL文件的办法,需要的朋友可以参考一下 1.打开VS2008或VS2010命令提示符(此例用VS2008) 将ocx文件拷贝到d:\Program Files\Microsoft ...

    将ocx文件转换成C#程序引用的DLL文件的办法

     将ocx文件转换成C#程序引用的DLL文件的办法,需要的朋友可以参考一下
      1.打开VS2008或VS2010命令提示符(此例用VS2008)

    将ocx文件拷贝到d:\Program Files\Microsoft Visual Studio 9.0\VC下

    2.注册ActiveX控件

    regsvr32 IB_USBKEY.ocx

    3.编译OCX文件

    aximp IB_USBKEY.ocx

    生成两个dll文件,项目中引用Ax前缀的文件

    4。将生成的两个dll文件拷贝到项目中

    转载于:https://www.cnblogs.com/markli/p/4096470.html

    展开全文
  • Java调用ocx控件以及dll

    2019-10-07 09:02:14
    http://lvqingboy-163-com.iteye.com/blog/769358 通过Java调用OCX控件有几种方法,JNI、JACOB、Jawin等 1.JNI 最直接的方式,也是最麻烦的方式,需要自己完成所有的工作,不推荐。 2.Jawin 尝试了一下,效果不错,...

    http://lvqingboy-163-com.iteye.com/blog/769358

    通过Java调用OCX控件有几种方法,JNI、JACOB、Jawin等

    1.JNI 最直接的方式,也是最麻烦的方式,需要自己完成所有的工作,不推荐。

    2.Jawin 尝试了一下,效果不错,但相对来说,其编程风格更贴近Windows,离Java有点远 。

    3.Jacob 使用Jacob非常方便,Java编程风格,需要了解的知识比较少。

    Jacob的使用方法:

    首先--

    1.在工程中导入 jacob.jar 这个包。
    2.把 jacob.dll 拷贝到 jdk\bin或者C:\WINDOWS\system32目录下。
    以上的两个文件您可以到网上http://danadler.com/jacob/ 下载的1.7的版本
    jacob.jar 与 jacob.dll 版本一致。

    3.注册ocx控件

    l 先把***.ocx控件放入c:\windows\system32 文件夹下

    l 在cmd命令行下,输入regsvr32  ***.ocx命令进行注册

    Java代码:

    1.初始化

    ActiveXComponent com = new ActiveXComponent("组件的ProgID") ;

    Dispatch disp = com.getObject();

    2.调用控件里面的方面

    2.1调用无参的方法,并返回一个short值

    Dispatch.call(disp, "Init").getShort();

    2.2调用有一个参数的方法,并返回一个boolean值

    Dispatch.call(disp,"Method",new Variant(args)).getBoolean();

    调用多个参数依次类推,注意在传递参数前,将Java中的参数转换成Variant。

    bug解决:

    1.java.lang.UnsatisfiedLinkError: no jacob in java.library.path

    原因是:没有把 jacob.dll 拷贝到 jdk\bin或者C:\WINDOWS\system32目录下

    2.Exception in thread "main" com.jacob.com.ComFailException: Can't get object clsid from progid

    原因是:regsvr32  ***.ocx命令进行注册后 ,获取的progid有误;

    3.

    Exception in thread "main" com.jacob.com.ComFailException: A COM exception has been encountered:

    At Invoke of: LoadFile

    Description: 灾难性故障

        at com.jacob.com.Dispatch.invokev(Native Method)

        at com.jacob.com.Dispatch.invokev(Dispatch.java:858)

        at com.jacob.com.Dispatch.callN(Dispatch.java:455)

        at com.jacob.com.Dispatch.call(Dispatch.java:544)

        at com.lv.office.AIPToTest.jacob(AIPToTest.java:24)

        at com.lv.office.AIPToTest.main(AIPToTest.java:14)

    原因是:

    在OCX控件中,重写COleControl.IsInvokeAllowed (DISPID)方法,即在控件的CMyNameCtrl中增加一个方法

    BOOL CMyNameCtrl::IsInvokeAllowed (DISPID)

       {

          return TRUE;

       }

    用这个方法的理由是:

    这个错误是由ActiveX结构设计造成的。

    在Ole4.0版本之前,外部程序是可以直接调用OCX中方法的。Ole4.0之后,每次调用控件中的方法,系统会自动检查是否允许调用,即运行COleControl.IsInvokeAllowed (DISPID)

    该方法检查控件是否正确的初始化或者是否通过持久存储接口正确加载,如果两个条件有一个满足,即返回TRUE,否则返回FALSE。

    当控件在MFC中使用时,很多细节,如初始化,都被过滤了,这样,大多数用户都不会遇到这个问题。但是,当我们从C、C++的dll中调用控件时,不满足上述条件,该方法返回FALSE,这时候再调用任何控件方法,都会出现上述异常。

    转载于:https://www.cnblogs.com/marryZhan/p/jacobocx.html

    展开全文
  • Java调用ocx控件以及dll和word文档    最近因为项目需要,特地研究了两天jacob操作office的一个java插件,因时间缘故,只研究了操作word,特此共享: 本人喜欢通过代码学习东西,所以,直接讲操作的代码拷贝出来...

    转载的,先保存起来以后研究

    Java调用ocx控件以及dllword文档

     

         最近因为项目需要,特地研究了两天jacob操作office的一个java插件,因时间缘故,只研究了操作word,特此共享:
        本人喜欢通过代码学习东西,所以,直接讲操作的代码拷贝出来,供大家分享。   
    public static void main(String args[]) {
    ComThread.InitSTA();//
    初始化com的线程,非常重要!!使用结束后要调用 realease方法
    /**
    完成初始化工作
    */
    ActiveXComponent objWord = new ActiveXComponent("Word.Application");// Instantiate objWord and Declare word object
    Dispatch wordObject = (Dispatch) objWord.getObject();// Assign a local word object
    Dispatch.put((Dispatch) wordObject, "Visible", new Variant(true));// Variant(true)
    表示word应用程序可见
    Dispatch documents = objWord.getProperty("Documents").toDispatch(); // documents
    表示word的所有文档窗口,(word是多文档应用程序)
    Dispatch document = Dispatch.call(documents, "Add").toDispatch(); //
    使用Add命令创建一个新文档,用Open命令可以打开一个现有文档

    /**
    *
    开始写word的工作,包括标题,正文(段落一、段落二)
    */
    Dispatch wordContent = Dispatch.get(document, "Content").toDispatch(); //
    取得word文件的内容
    Dispatch selection = Dispatch.get(wordObject, "Selection").toDispatch();
    Dispatch paragraphFormat=Dispatch.get(selection,"ParagraphFormat").getDispatch();
    Dispatch font = Dispatch.get(selection, "Font").toDispatch(); //
    字型格式化需要的对象
    Dispatch.put(paragraphFormat, "Alignment", "1"); //
    设置标题的对齐方式(1:置中 2:靠右 3:靠左)
    Dispatch.put(font, "Bold", "1"); //
    字型租体
    Dispatch.put(font, "Color", "1,0,0,0"); //
    字型颜色(1,0,0,0=>红色  1,1,0,0=>棕色)
    Dispatch.put(font, "Italic", "1"); //
    字型斜体
    Dispatch.call(selection, "TypeText", "
    标题"); // 写入标题内容
    Dispatch.call(selection, "TypeParagraph"); //
    空一行段落
    Dispatch.put(paragraphFormat, "Alignment", "3"); //
    设置正文的对齐方式(1:置中 2:靠右 3:靠左)
    Dispatch.put(selection, "Text", " 
    段落one");
    Dispatch.call(selection,"MoveRight");
    Dispatch.call(selection, "TypeParagraph"); //
    空一行段落
    Dispatch.put(selection, "Text", " 
    段落two");
    Dispatch.call(selection,"MoveRight");
    /**
    *
    写一个新的table
    */
    Dispatch tables = Dispatch.get(wordContent, "Tables").toDispatch();
            Dispatch tablerange = Dispatch.get(selection, "Range").toDispatch();
            Dispatch newTable = Dispatch.call(tables, "Add", tablerange,
                    new Variant(2), new Variant(3)).toDispatch();
           
            /**
             *
    往表格中填写内容。
             */
            Dispatch newtables = Dispatch.get(wordContent, "Tables").toDispatch();
            Dispatch table = Dispatch.call(newtables, "Item", new Variant(1)).toDispatch(); //
    要填充的表格         
            Dispatch cols = Dispatch.get(table, "Columns").toDispatch(); //
    表格的所有行
            Dispatch rows = Dispatch.get(table, "Rows").toDispatch(); //
    表格的所有列
            int colsCount=Dispatch.get(cols, "Count").toInt();
            int rowsCount=Dispatch.get(rows,"Count").toInt();
            Dispatch col = Dispatch.get(cols, "First").toDispatch();
            for(int i=1;i<=rowsCount;i++)
            {
            for(int m=1;m<=colsCount;m++)
            {
            Dispatch cell=Dispatch.call(table,"Cell",new Variant(i),new Variant(m)).getDispatch();
            Dispatch.call(cell, "Select");
            Dispatch.put(selection, "Text",i*m );
            Dispatch.call(selection,"MoveRight");
            }
            }
            Dispatch.call(selection, "EndKey",6);

    /**
    *
    开始读word的工作
    */
    Dispatch paragraphs = Dispatch.get(wordContent, "Paragraphs").toDispatch(); //
    所有段落
    int paragraphCount = Dispatch.get(paragraphs, "Count").toInt(); //
    一共的段落数
    for(int i =1;i<=paragraphCount;i++)
    {
    Dispatch paragraph = Dispatch.call(paragraphs, "Item", new Variant(i)).toDispatch();
    Dispatch range = Dispatch.call(paragraph,"Range").toDispatch();
    String ptext = Dispatch.get(range, "text").getString();
    System.out.println(ptext);
    }
    /**
    *
    加入图片
    */
    String picturePath="E:\\
    照片\\苏歆然\\2009-01-08-00.bmp";//图片的路径
    Dispatch.call(Dispatch.get(selection, "InLineShapes").toDispatch(),
                    "AddPicture", picturePath);
    /**
    *
    关闭文档
    */
    Dispatch.call(document, "SaveAs", new Variant("d://abc1.doc")); //
    保存一个新文档
    ComThread.Release();//
    释放com线程。根据jacob的帮助文档,com的线程回收不由java的垃圾回收器处理
    }     

          
    生成的word 的格式如下:              
                   


        
    补充:jacob操作powerpoint
         ActiveXComponent ppt = new ActiveXComponent("PowerPoint.Application");

    Dispatch pptObject=ppt.getObject();

    Dispatch.put((Dispatch) pptObject, "Visible", new Variant(true));

    //
    设置程序界面是否可见

    ActiveXComponent presentations = ppt.getPropertyAsComponent("Presentations");

    //
    生成一个新的ppt 对象

    ActiveXComponent presentation =presentations.invokeGetComponent("Add", new Variant(1));
    Dispatch windows = presentation.getProperty("Windows").toDispatch();
    Dispatch window = Dispatch.call(windows, "Item", new Variant(1)).toDispatch();
    Dispatch selection = Dispatch.get(window, "Selection").toDispatch();

    ActiveXComponent slides = presentation.getPropertyAsComponent("Slides");

    //
    添加第一张幻灯片;
    slides.invoke("Add", new Variant(1), new Variant(1));


    Dispatch slideRange=Dispatch.get(selection, "SlideRange").getDispatch();
    Dispatch shapes=Dispatch.get(slideRange, "Shapes").getDispatch();
    Dispatch shape1 = Dispatch.call(shapes, "Item", new Variant(2)).toDispatch();

    Dispatch.call(shape1, "Select");

    Dispatch shapeRange=Dispatch.get(selection, "ShapeRange").getDispatch();
    Dispatch textFrame=Dispatch.get(shapeRange, "TextFrame").getDispatch();
    Dispatch textRange=Dispatch.get(textFrame, "TextRange").getDispatch();
    Dispatch.call(textRange, "Select");
    Dispatch.put(textRange,"Text","
    测试");
    //
    添加第二张幻灯片;
    slides.invoke("Add", new Variant(2), new Variant(1));
    // powerpoint
    幻灯展示设置对象
    ActiveXComponent setting = presentation.getPropertyAsComponent("SlideShowSettings");
    setting.invoke("Run");

    //
    保存ppt
    presentation.invoke("SaveAs", new Variant(PPT_FILE));
    //
    释放控制线程
    ComThread.Release();

     

    :Java调用ocx控件以及dll

    通过Java调用OCX控件有几种方法,JNIJACOBJawin

    1.JNI 最直接的方式,也是最麻烦的方式,需要自己完成所有的工作,不推荐。

    2.Jawin 尝试了一下,效果不错,但相对来说,其编程风格更贴近Windows,离Java有点远

    3.Jacob 使用Jacob非常方便,Java编程风格,需要了解的知识比较少。

     

    Jacob的使用方法:

     

    首先--

     

    1.在工程中导入 jacob.jar 这个包。
    2. jacob.dll 拷贝到 jdk\bin或者C:\WINDOWS\system32目录下。
    以上的两个文件您可以到网上http://danadler.com/jacob/ 下载的1.7的版本
    jacob.jar jacob.dll 版本一致。

    3.注册ocx控件

    l  先把***.ocx控件放入c:\windows\system32 文件夹下

    l  cmd命令行下,输入regsvr32  ***.ocx命令进行注册

     

    Java代码:

    1.初始化 

    ActiveXComponent com = new ActiveXComponent("组件的ProgID") ;

    Dispatch disp = com.getObject();

     

    2.调用控件里面的方面

    2.1调用无参的方法,并返回一个short

    Dispatch.call(disp, "Init").getShort();

     

    2.2调用有一个参数的方法,并返回一个boolean

    Dispatch.call(disp,"Method",new Variant(args)).getBoolean();

    调用多个参数依次类推,注意在传递参数前,将Java中的参数转换成Variant

     

    bug解决:

    1.java.lang.UnsatisfiedLinkError: no jacob in java.library.path

    原因是:没有 jacob.dll 拷贝到 jdk\bin或者C:\WINDOWS\system32目录下

     

    2.Exception in thread "main" com.jacob.com.ComFailException: Can't get object clsid from progid

     原因是:regsvr32  ***.ocx命令进行注册后 ,获取的progid有误;

     

    3.

    Exception in thread "main" com.jacob.com.ComFailException: A COM exception has been encountered:

    At Invoke of: LoadFile

    Description: 灾难性故障

        at com.jacob.com.Dispatch.invokev(Native Method)

        at com.jacob.com.Dispatch.invokev(Dispatch.java:858)

        at com.jacob.com.Dispatch.callN(Dispatch.java:455)

        at com.jacob.com.Dispatch.call(Dispatch.java:544)

        at com.lv.office.AIPToTest.jacob(AIPToTest.java:24)

        at com.lv.office.AIPToTest.main(AIPToTest.java:14)

     

     

     

    原因是:

    OCX控件中,重写COleControl.IsInvokeAllowed (DISPID)方法,即在控件的CMyNameCtrl中增加一个方法

    BOOL CMyNameCtrl::IsInvokeAllowed (DISPID)

       {

          return TRUE;

       }

    用这个方法的理由是:

    这个错误是由ActiveX结构设计造成的。

    Ole4.0版本之前,外部程序是可以直接调用OCX中方法的。Ole4.0之后,每次调用控件中的方法,系统会自动检查是否允许调用,即运行COleControl.IsInvokeAllowed (DISPID)

    该方法检查控件是否正确的初始化或者是否通过持久存储接口正确加载,如果两个条件有一个满足,即返回TRUE,否则返回FALSE

    当控件在MFC中使用时,很多细节,如初始化,都被过滤了,这样,大多数用户都不会遇到这个问题。但是,当我们从CC++dll中调用控件时,不满足上述条件,该方法返回FALSE,这时候再调用任何控件方法,都会出现上述异常。

     

    展开全文
  • 做VB的,经常注册和反注册OCX控件和DLL链但是,每次都要 "开始"--"运行" --"regsvr32 C:\********\******.ocx"还真的有点麻烦...有以下方法,可以解决上面的麻烦:KEY1: 新建( %windir%...
  • OCXDLL的区别

    2016-08-08 13:31:35
    因为工作的原因开始接触OCX控件的开发,原来从事的工作中,大多数设计的是标准C和C++,很少涉及C及C++语言的应用,最近在项目中的学习也让我深深的感觉到之前课堂讲解内容的肤浅,虽然原来以为讲解的内容已经相当...
  • 今日从API层解读SP封装的ActiveX层,因为我的ActiveX层将调用基于wosa规范的...等转换变成SP中的spi函数。因而调用第一步就是启动XFXManger环境。文档中给出的一个简单调用的流程:startup-open-register-lock-getin...
  • .ocxocx控件的扩展名,与.exe .dll同属于PE文件。下面说说什么是ocx控件!  OCX 是对象类别扩充组件。  如果你用过Visual Basic或者Delphi一类的可视化编程工具,那么对控件这个概念一定不会陌生,就是那些工具...
  • “数据格式”转换 仍然是程序员沉重的负担。 对象的链接与嵌入 ( Object Linking and Embedded,OLE )的诞生把原来应用程序的 数据交换 提高到 “对象交换” ,这样程序间不但获得 数据 也同样获得彼此的 应用程序...
  • 如何给ocx,dll控件进行数字签名

    千次阅读 2008-03-01 11:06:00
    给自己的 ocx,dll 等控件做个数字签名,未认证当然是不被信任的:)下面用到的命令可以从 Microsoft Visual Studio 6.0安装后的 SDK_bin 目录中找到1、制作证书makecert -sv bksx.pvk -ss "北控三兴IE插件" -n "CN=...
  • vs2015 dll封装为ocx的过程

    千次阅读 2018-11-15 11:31:30
    一、创建项目 1、新建MFC ActiveX控件项目 ...  3、生成ENP_ActiveXDLL项目 ...其中ENP_ActiveXDLLCtrl.cpp是写接口的主要功能部分;ENP_ActiveXDLL.idl中定义了之后...二、添加与dll相对应的对外接口 1、点击视图...
  • delphi中用代码实现注册OcxDll

    千次阅读 2013-07-11 03:03:06
    在windows系统中,可以通过Regsvr32来实现注册ocx或者dl, 编程时,调用Regsvr32来注册,却不能正常执行。尤其是在Win7系统中,需要管理员身份才能运行。 使用下面的代码则能正常注册。 //注册 function ...
  • Activex、OLE、COM、OCXDLL之间有什么区别? 转载地址:http://fykyx521.iteye.com/blog/446275 http://www.blogjava.net/Jack2007/archive/2008/04/27/196392.html Activex 、OLE、COM、OCXDLL之间...
  • 3、编译ocx axmip D:\zhang\BannerImageExport.ocx 要改成自己的ocx文件路径 生成dll如下图所示: ps:根据其他大佬的步骤做出来的,一开始在VC文件下运行cmd显示axmip不是内部或外部命令,折腾了好久,改路径什么...
  • Activex 、OLE、COM、OCXDLL之间有什么区别 ? - 走在架构师的大道上 ... 熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是 比较...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,544
精华内容 1,417
关键字:

ocx转换成dll