精华内容
下载资源
问答
  • jacob调用com组件

    千次阅读 2016-12-11 22:04:29
    com组件可以存在exe,或者dll中,而且对vb,vc,delphi等语言提供了统一的调用,而...java主要使用jacob来调用com组件。 1.注册com组件(这里使用大漠插件dm.dll) regsvr32 dm.dll 另外regsvr32 /u dm.dll 代表卸载c

    com组件可以存在exe,或者dll中,而且对vb,vc,delphi等语言提供了统一的调用,而dll只能存在于dll文件中,而且不同语言调用方式不一样,com组件开发难度相对于dll较大,多用于大型项目中。

    java主要使用jacob来调用com组件。

    1.注册com组件(这里使用大漠插件dm.dll)

    regsvr32 dm.dll

    另外regsvr32 /u dm.dll 代表卸载com组件


    2.查看dll调用需要的progID

    使用文本编辑工具以16进制方式打开dm.dll,搜索progID

    可以看到progID就在''内,是"dm.dmsoft"




    3.下载jacob1.6.jar+jacob-1.16-M1-x86.dll+jacob-1.16-M1-x64.dll

    将jar包放入工程构建路径,2个dll文件放入jre下的bin目录


    4.调用示例

    一、调用dll中的颜色比较方法CmpColor


    ActiveXComponent activeDm = new ActiveXComponent("dm.dmsoft");
    
    Variant[] var = new Variant[4];
    			var[0] = new Variant(600);
    			var[1] = new Variant(600);
    			var[2] = new Variant("ffffff");
    			var[3] = new Variant(1f);
    
    			int cmpColor = activeDm.invoke("CmpColor", var).getInt();
    			System.out.println(cmpColor);
    			var = null;

    上面的程序代表判断(600,600)的坐标上的颜色是否是白色,相似度为1(完全匹配)


    函数说明:CmpColor



    二、调用dll中的寻找窗口句柄方法,如果找到了,绑定窗口。


    ActiveXComponent activeDm = new ActiveXComponent("dm.dmsoft");
    
    int parentHwnd = 0;
    			String className = null;
    			String title = "cmd";//寻找有没有一个窗口句柄类似于“cmd”的窗口
    			var = new Variant[3];
    			var[0]=new Variant(parentHwnd);
    			var[1]=new Variant(className);
    			var[2]=new Variant(title);
    			int windowId= activeDm.invoke("FindWindowEx",var).getInt();
    			System.out.println(windowId);//windowId>0代表找到,否则没有找到
    			var = null;
    			
    			//----
    			
    			//SetWindowState表示将找到的窗口状态设置为激活,以便后面能成功绑定
    			int getResult=activeDm.invoke("SetWindowState",windowId,1).getInt();
    			
    			//----
    			
    			//进行dm窗口绑定
    			String display = "normal";
    			String mouse = "normal";
    			String key = "normal";
    			int mode = 0;
    			var=new Variant[5];
    			var[0]=new Variant(windowId);
    			var[1]=new Variant(display);
    			var[2]=new Variant(mouse);
    			var[3]=new Variant(key);
    			var[4]=new Variant(mode);
    			if(windowId>0){
    				int bindWindow=activeDm.invoke("BindWindow",var).getInt();
    			}
    			var=null;


    上面用到的函数简介


    FindWindowEx

    函数简介:
    
    查找符合类名或者标题名的顶层可见窗口,如果指定了parent,则在parent的第一层子窗口中查找.
    
    函数原型:
    
    long FindWindowEx(parent,class,title) 
    
    参数定义:
    
    parent 整形数: 父窗口句柄,如果为空,则匹配所有顶层窗口
    
     
    
    class 字符串: 窗口类名,如果为空,则匹配所有. 这里的匹配是模糊匹配.
    
    title 字符串: 窗口标题,如果为空,则匹配所有. 这里的匹配是模糊匹配.
    
    返回值:
    
    整形数:
    整形数表示的窗口句柄,没找到返回0
    
    示例:
    
    hwnd = dm.FindWindowEx(0,"","记事本") 
    


    SetWindowState
    函数简介:
    
    设置窗口的状态
    
    函数原型:
    
    long SetWindowState(hwnd,flag) 
    
    参数定义:
    
    hwnd 整形数: 指定的窗口句柄
    
    flag 整形数: 取值定义如下
    
    0 : 关闭指定窗口
    
    1 : 激活指定窗口
    
    2 : 最小化指定窗口,但不激活
    
    3 : 最小化指定窗口,并释放内存,但同时也会激活窗口.
    
    4 : 最大化指定窗口,同时激活窗口.
    
    5 : 恢复指定窗口 ,但不激活
    
    6 : 隐藏指定窗口
    
    7 : 显示指定窗口
    
    8 : 置顶指定窗口
    
    9 : 取消置顶指定窗口
    
    10 : 禁止指定窗口
    
    11 : 取消禁止指定窗口
    
    12 : 恢复并激活指定窗口
    
    13 : 强制结束窗口所在进程.
    
    返回值:
    
    整形数:
    0: 失败
    1: 成功
    
    示例:
    
    dm_ret = dm.SetWindowState(hwnd,0) 
    


    BindWindow
    函数简介:
    
    绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定,高级用户可以参考BindWindowEx更加灵活强大.
    
    函数原型:
    
    long BindWindow(hwnd,display,mouse,keypad,mode)
    
    参数定义:
    
    hwnd 整形数: 指定的窗口句柄
    
    display 字符串: 屏幕颜色获取方式 取值有以下几种
    
    "normal" : 正常模式,平常我们用的前台截屏模式
    
    "gdi" : gdi模式,用于窗口采用GDI方式刷新时. 此模式占用CPU较大.
    
    "gdi2" : gdi2模式,此模式兼容性较强,但是速度比gdi模式要慢许多,如果gdi模式发现后台不刷新时,可以考虑用gdi2模式.
    
    "dx2" : dx2模式,用于窗口采用dx模式刷新,如果dx方式会出现窗口所在进程崩溃的状况,可以考虑采用这种.采用这种方式要保证窗口有一部分在屏幕外.win7或者vista不需要移动也可后台.此模式占用CPU较大.
    
    "dx3" : dx3模式,同dx2模式,但是如果发现有些窗口后台不刷新时,可以考虑用dx3模式,此模式比dx2模式慢许多. 此模式占用CPU较大.
    
    "dx" : dx模式,等同于BindWindowEx中,display设置的"dx.graphic.2d|dx.graphic.3d",具体参考BindWindowEx
    注意此模式需要管理员权限
    
    mouse 字符串: 鼠标仿真模式 取值有以下几种
    
    "normal" : 正常模式,平常我们用的前台鼠标模式
    
    "windows": Windows模式,采取模拟windows消息方式 同按键自带后台插件.
    
    "windows2": Windows2 模式,采取模拟windows消息方式(锁定鼠标位置) 此模式等同于BindWindowEx中的mouse为以下组合
    "dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.message"
    注意此模式需要管理员权限
    
    "windows3": Windows3模式,采取模拟windows消息方式,可以支持有多个子窗口的窗口后台.
    
    "dx": dx模式,采用模拟dx后台鼠标模式,这种方式会锁定鼠标输入.有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后鼠标无效的情况.此模式等同于BindWindowEx中的mouse为以下组合
    "dx.public.active.api|dx.public.active.message|dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.api|dx.mouse.state.message|dx.mouse.api|dx.mouse.focus.input.api|dx.mouse.focus.input.message|dx.mouse.clip.lock.api|dx.mouse.input.lock.api|dx.mouse.cursor"
    注意此模式需要管理员权限
    
    "dx2":dx2模式,这种方式类似于dx模式,但是不会锁定外部鼠标输入.
    有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后手动激活),否则可能会出现绑定后鼠标无效的情况. 此模式等同于BindWindowEx中的mouse为以下组合
    "dx.public.active.api|dx.public.active.message|dx.mouse.position.lock.api|dx.mouse.state.api|dx.mouse.api|dx.mouse.focus.input.api|dx.mouse.focus.input.message|dx.mouse.clip.lock.api|dx.mouse.input.lock.api| dx.mouse.cursor"
    注意此模式需要管理员权限
    
    keypad 字符串: 键盘仿真模式 取值有以下几种
    
    "normal" : 正常模式,平常我们用的前台键盘模式
    
    "windows": Windows模式,采取模拟windows消息方式 同按键的后台插件.
    
    "dx": dx模式,采用模拟dx后台键盘模式。有些窗口在此模式下绑定时,需要先激活窗口再绑定(或者绑定以后激活),否则可能会出现绑定后键盘无效的情况. 此模式等同于BindWindowEx中的keypad为以下组合
    "dx.public.active.api|dx.public.active.message| dx.keypad.state.api|dx.keypad.api|dx.keypad.input.lock.api"
    注意此模式需要管理员权限
    
     
    
    mode 整形数: 模式。 取值有以下两种
    
         0 : 推荐模式此模式比较通用,而且后台效果是最好的.
    
         1 : 和模式0效果一样,如果模式0会失败时,可以尝试此模式. <收费功能,具体详情点击查看>
    
         2 : 同模式0,此模式为老的模式0,尽量不要用此模式,除非有兼容性问题.
    
         3 : 同模式1,此模式为老的模式1,尽量不要用此模式,除非有兼容性问题. <收费功能,具体详情点击查看>
    
         4 : 同模式0,如果模式0有崩溃问题,可以尝试此模式.
    
         5 : 同模式1, 如果模式0有崩溃问题,可以尝试此模式. <收费功能,具体详情点击查看>
    
         6 : 同模式0,如果模式0有崩溃问题,可以尝试此模式. <收费功能,具体详情点击查看>
    
         7 : 同模式1,如果模式1有崩溃问题,可以尝试此模式. <收费功能,具体详情点击查看>
    
         101 : 超级绑定模式. 可隐藏目标进程中的dm.dll.避免被恶意检测.效果要比dx.public.hide.dll好. 推荐使用. <收费功能,具体详情点击查看>
    
         103 : 同模式101,如果模式101有崩溃问题,可以尝试此模式. <收费功能,具体详情点击查看>
    
    需要注意的是: 模式1 3 5 7 101 103在大部分窗口下绑定都没问题。但也有少数特殊的窗口,比如有很多子窗口的窗口,对于这种窗口,在绑定时,一定要把
    鼠标指向一个可以输入文字的窗口,比如一个文本框,最好能激活这个文本框,这样可以保证绑定的成功.
    
    返回值:
    
    整形数:
    0: 失败
    1: 成功
    
    如果返回0,可以调用GetLastError来查看具体失败错误码,帮助分析问题.
    
    示例:
    
    
    // display: 前台 鼠标:前台键盘:前台 模式0
    dm_ret = dm.BindWindow(hwnd,"normal","normal","normal",0)
    
    // display: gdi 鼠标:前台 键盘:前台 模式1
    dm_ret = dm.BindWindow(hwnd,"gdi","normal","normal",1)
    
    // display: dx 鼠标:前台 键盘:前台 模式0
    dm_ret = dm.BindWindow(hwnd,"dx","normal","normal",0)
    
    // display: dx 鼠标:windows后台 键盘:windows后台 模式1
    dm_ret = dm.BindWindow(hwnd,"dx","windows","windows",1)
    
    // display: dx 鼠标:dx 后台 键盘: dx后台 模式1
    dm_ret = dm.BindWindow(hwnd,"dx","dx","dx",1) 
    
    // display: dx 鼠标:windows3后台 键盘:windows后台 模式1
    dm_ret = dm.BindWindow(hwnd,"dx","windows3","windows",1)
    
    
    注意:
    
    
    绑定之后,所有的坐标都相对于窗口的客户区坐标(不包含窗口边框)
    另外,绑定窗口后,必须加以下代码,以保证所有资源正常释放
    
    这个函数的意思是在脚本结束时,会调用这个函数。需要注意的是,目前的按键版本对于这个函数的执行不是线程级别的,也就是说,这个函数只会在主线程执行,子线程绑定的大漠对象,不保证完全释放。 
    Sub OnScriptExit()
        dm_ret = dm.UnBindWindow() 
    End Sub
    
    另外 绑定dx会比较耗时间,请不要频繁调用此函数.
    
    另外如果绑定的是dx,要注意不可连续操作dx,中间至少加个10MS的延时,否则可能会导致操作失败.比如绑定图色DX,那么不要连续取色等,键鼠也是一样.
    
     
    
    注意,图色dx,鼠标windows2 dx dx2以及键盘dx都需要管理员权限才能运行,所以对于WIN7和VISTA用户,在启动目标窗口时,必须用管理员方式启动,否则无法绑定成功!
    
     
    
    还有一点特别要注意的是,有些窗口绑定之后必须加一定的延时,否则后台也无效.一般1秒到2秒的延时就足够.
    
     
    
    发现绑定失败的几种可能(一般是需要管理员权限的模式才有可能会失败)
    
    1.     系统登录的帐号必须有Administrators权限
    
    2.     如果是vista和win7系统,启动窗口进程必须用管理员模式启动,脚本也必须用管理员模式启动.
    
    3.     一些防火墙会防止插件注入窗口所在进程,比如360防火墙等,必须把dm.dll设置为信任.
    
    4.     还有一个比较弱智的可能性,那就是插件没有注册到系统中,这时CreateObject压根就是失败的. 检测对象是否创建成功很简单,如下代码
    
    set dm = createobject("dm.dmsoft")
    ver = dm.Ver()
    If len(ver) = 0 Then
        MessageBox "创建对象失败,检查系统是否禁用了vbs脚本权限"
        EndScript
    End If
    
     
    
    5.     在沙盘中开的窗口进程,绑定一些需要管理员权限的模式,会失败。
    解决方法是要配置沙盘参数,具体如何配置参考沙盘绑定方法.
    
    
    
    6.     窗口所在进程有保护,这个我也无能为力.
    





    展开全文
  • 怎样用DELPHI调用COM组件

    千次阅读 2018-11-08 02:21:44
    怎样用DELPHI调用COM组件

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                    在Delphi中的话,创建一个工程后,菜单Project下有一个Import   Type   Library选项,  
      点击进入,选择你用VC编写的dll的Type   Library,将其创建后,会产生一个XXXX_LIB,  
      XXXX会根据组件的不同而不同,在你的工程内Uses这个XXXX_TLB,这样你就可以在你的  
      工程内调用了,例如:  
      procedure   xxxxx;  
      var  
          ITest:   IYourCustomInterface;  
      begin  
          ITest   :=   CoYourCustomInterface.Create;  
      //ITest   :=   CoYourCustomInterface.CreateRemote("RemoteMachineName")  
          ITest.Method;  
      end;  
      假如你定义的接口是IYourCustomInterface  
      注释掉的是另外一种调法,指组件与应用程序不在同一台机器上            

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • Windows下使用Python调用com组件

    千次阅读 2019-04-26 19:04:18
    Windows下使用Python调用com组件

    Python for Win32 Extensions HelpWindows下使用Python调用com组件
    转python—用Python实现COM对象
    python中使用Com组件说明
    Quick Start to Client side COM and Python
    生成的Python COM支持

    生成的Python COM支持
    此文件描述了Python COM扩展如何支持“生成的文件”。此处包含的信息适用于专家Python用户以及需要利用支持的高级功能的人员。快速入门客户端COM文档中提供了更多常规信息。
    
    介绍
    生成的Python COM支持意味着.py文件存在于特定COM对象后面。此.py文件由COM类型库中的生成过程创建。
    
    本文档讨论了.py文件创建过程。
    
    设计目标
    主要的设计目标是Python程序员不需要了解他们希望使用的类型库。他们不需要知道使用类型库的特定Python模块的名称。COM使用IID,版本和LCID来标识类型库。因此,Python程序员只需知道这些信息即可获得Python模块。
    
    如何生成支持文件
    支持文件可以由makepy实用程序“脱机”生成,也可以在自定义Python代码中生成。
    
    使用makepy在很多方面都要简单得多 - 你只需选择类型库就可以了!在快速启动客户端的COM文件描述了这一过程。
    
    但是,您通常希望使用代码来确保已处理类型库。本文档描述了该过程。
    
    用法
    win32com.client.gencache模块实现了所有功能。如上所述,如果您希望从代码生成支持,您需要知道类型库的IID,版本和LCID。
    
    定义了以下功能。其使用的最佳示例可能是Pythonwin OCX演示和COM测试套件(特别是testMSOffice.py)
    
    请注意,gencache.py文件支持从命令行运行,并提供一些用于管理缓存的实用程序。运行该文件以查看使用选项。
    
    使用makepy来帮助生成运行时
    makepy支持“-i”选项,以打印有关类型库的信息。当您选择类型库时,makepy将打印出您不能粘贴到应用程序中的2行代码。这将允许您的模块在运行时生成makepy .py文件,但只需要几秒钟!
    
    win32com.client.gencache函数
    def MakeModuleForTypelib(typelibCLSID,lcid,major,minor,progressInstance = None):
    生成对类型库的支持。
    
    给定类型库的IID,LCID和版本信息,生成并导入必要的支持文件。
    
    返回
    
    Python模块。没有例外。
    
    PARAMS
    
    typelibCLSID
    类型库的IID。
    
    主要的
    Integer主要版本。
    
    minor
    Integer minor版本。
    
    lcid
    库的整数LCID。
    
    progressInstance
    用作进度指示器的类实例,或者使用默认GUI的实例。 
    
    def EnsureModule(typelibCLSID,lcid,major,minor,progressInstance = None):
    确保为类型库加载Python支持,并在必要时生成。
    
    给定类型库的IID,LCID和版本信息,检查并在必要时生成,然后导入必要的支持文件。
    
    返回:
    
    Python模块。在生成过程中没有捕获异常。
    
    PARAMS
    
    typelibCLSID
    类型库的IID。
    
    主要的
    Integer主要版本。
    
    minor
    Integer minor版本。
    
    lcid
    库的整数LCID。
    
    progressInstance
    用作进度指示器的类实例,或者使用默认GUI的实例。 
    
     
    
    def GetClassForProgID(progid):
    获取程序ID的Python类
    
    给定一个程序ID,返回一个包装COM对象的Python类
    
    返回
    
    Python类,如果没有可用的模块,则为None。
    
    PARAMS
    
    progid
    A COM ProgramID或IID(例如,“Word.Application”)
    
     
    
    def GetModuleForProgID(progid):
    获取程序ID的Python模块
    
    给定一个程序ID,返回一个Python模块,其中包含包装COM对象的类。
    
    返回
    
    Python模块,如果没有可用的模块,则为None。
    
    PARAMS:
    
    progid
    A COM ProgramID或IID(例如,“Word.Application”)
    
     
    
    def GetModuleForCLSID(clsid):
    获取CLSID的Python模块
    
    给定一个CLSID,返回一个Python模块,其中包含包装COM对象的类。
    
    返回
    
    Python模块,如果没有可用的模块,则为None。
    
    PARAMS
    
    progid
    A COM CLSID(即,不是描述)
    
     
    
    def GetModuleForTypelib(typelibCLSID,lcid,major,minor):
    获取类型库ID的Python模块
    
    返回
    
    导入的Python模块,否则为None
    
    参数:
    
    typelibCLSID
    类型库的IID。
    
    主要的
    Integer主要版本。
    
    minor
    Integer minor版本
    
    lcid
    库的整数LCID。
    
    展开全文
  • C#中调用COM对象

    千次阅读 2015-05-22 20:42:29
    C#中调用COM对象

    C#前期绑定方式来调用COM对象

    .NET框架是COM的一个自然发展,两者共享许多核心要素,这包括组件的再利用以及语言的中立性。为了向后兼容,COM Interop可以使用现存的COM组件而不要求对原始组件进行修改。当一个 .NET 框架开发人员想将COM代码合并到一个管理应用程序中时,就可以用COM Interop功能引入相关的COM类型。引入之后,这个COM类型就可以使用了。
        例子:
                Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
                excel.Application.Workbooks.Add(true);
                excel.Visible = false;
                excel.DisplayAlerts = false;
                excel.AlertBeforeOverwriting = false;
                try
                {
                    excel.Cells[1, 1] = title;
                    Microsoft.Office.Interop.Excel.Range title_size_Rng = excel.get_Range("A" + (1).ToString(), "A" + (1).ToString());
                    title_size_Rng.Font.Size = 15;
                   // title_size_Rng.ColumnWidth = 8.25;
                    //title_size_Rng.RowHeight = 25.5;
                    Microsoft.Office.Interop.Excel.Range title_type_Rng = excel.get_Range("A" + (1).ToString(), GetExcelCol(dr_ks.Length) + (1).ToString());
                    title_type_Rng.Merge(Type.Missing);
                   Microsoft.Office.Interop.Excel.Range head_Rng = excel.get_Range("A" + (1).ToString(), GetExcelCol(dr_ks.Length) + (2).ToString());
                    head_Rng.Font.Bold = true;
                    head_Rng.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                    head_Rng.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
             }
                finally
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
                    excel.Quit();
                    excel = null;
                    GC.Collect();
                    //invoke InvokeMothed1 = new invoke(this.SetButtonEnable);
                    //fm.Invoke(InvokeMothed1);
                }

    C#后期绑定方式来调用COM对象

    实际应用当中,可能有的时候需要用到后期绑定方式来调用COM对象。

    1、静态方法System.Type.GetTypeFromProgID 方法 (String),该方法可获取与指定程序标识符 (ProgID) 关联的类型,如果在加载 Type 时遇到错误,则返回空值。
    通过它可获取对代表COM对象类型的Type对象的引用。此方法是专为 COM 组件支持提供的。
    2、静态方法System.Activator.CreateInstance(),使用与指定参数匹配程度最高的构造函数创建指定类型的实例。 
    这里使用Activator.CreateInstance()创建COM对象的一个实例。
    3、System.Type类的非静态方法InvokeMember()可以创建一个在编译期间未知的类的实例,只需要在调用的时候使用BindingFlags枚举量中的SetProperty值即可对com对象的公共属性进行操作。
    InvokeMember方法的5个参数如下:   
      1)要调用的成员的名称。String,它包含要调用的构造函数、方法、属性或字段成员的名称;空字符串 (""),表示调用默认成员;对于 IDispatch 成员,则为一个表示 DispID 的字符串,例如“[DispID=3]”。
      2)BindingFlag枚举的值,表明调用的是属性还是方法等。这个位屏蔽,由一个或多个指定搜索执行方式的 BindingFlags 组成。访问可以是 BindingFlags 之一,如 Public、NonPublic、Private、InvokeMethod 和 GetField 等。不需要指定查找类型。如果省略查找类型,则将应用 BindingFlags.Public |BindingFlags.Instance。
      3)一个 Binder 对象,该对象定义一组属性并启用绑定,而绑定可能涉及选择重载方法、强制参数类型和通过反射调用成员。通常使用默认Binder 对象,即传递一个null值;
      4)对Com对象本身的引用;
      5)包含传递给要调用的成员的参数的数组。即希望给Com方法发送的输入参数数组。

    以下是测试代码,调用Word的com组件,并设置它的可视属性。

    object comObject;
                System.Type comObjectName;
                
    //参数
                object[] args = new object[1];
                
    //要获取的类型的 ProgID。 
                string progID = "Word.Application";

                
    //与指定 ProgID 关联的类型,即获取相应的Com对象
                comObjectName = System.Type.GetTypeFromProgID(progID);
                
    //创建Com的实例
                if (comObjectName != null)
                
    {
                    comObject 
    = Activator.CreateInstance(comObjectName);
                    
    //设置需要设置的参数值
                    args[0= true;
                    
    //设置可视属性,显示Word窗体
                    comObjectName.InvokeMember("Visible", BindingFlags.SetProperty, null, comObject, args);
                }

    以下是调用方法示例(关闭刚才创建的Word窗体)
                args = new object[3];
                comObjectName.InvokeMember(
    "Quit", BindingFlags.InvokeMethod, null, comObject, args);

    展开全文
  • C# 互操 调用COM组件

    千次阅读 2016-09-30 09:21:49
    引言如何在C#中调用COM组件——访问Office 互操作对象在C# 中调用COM组件的实现原理剖析错误处理小结   一、引言  COM(Component Object Modele,组件对象模型)是微软以前推崇的一个开发技术,所以现在微软的...
  • java调用com组件方法

    千次阅读 2013-11-11 14:57:32
    对照vb代码实现java调用com组件方法 2009-03-02 14:39 1.简介  java调用com组件方法,最简单的方法莫过于使用JACOB控件。 JACOB就是 JAVA-COM Bridge的缩写,提供自动化的访问com的功能,也是通过JNI功能...
  • 由于com组件调用起来比较耗时,所以我想把这部分放到子线程中去完成,但是当我在子线程中调用com组件的时候,报错了:检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现...
  • 近期项目使用COM组件生成的DLL库,我采用QT自带Com组件操作类调用DLL中函数接口;QT自带com组件操作类库,QAxObject或QAxWidget即可操作以COM为组件的DLL库,网上有许多例子采用这两个类操作EXCEL,在此我不做详述,...
  • java调用COM组件的几种工具

    千次阅读 2016-02-27 21:21:16
    java调用COM组件的几种工具
  • C#调用COM组件的几个步骤

    千次阅读 2017-11-05 22:45:00
    < DOCTYPE ... 这里我们将介绍C#调用COM组件的几个步骤,先将Com类型信息转换为.NET元数据,然后查看元数据,最后测试程序。 首先将Com类型信息转换为.NET元数据 tlbimp sam...
  • C++和C#相互调用COM组件的方法简介

    千次阅读 2017-07-25 15:28:41
     1、在VS2005中,C#编写DLL并使用C++调用 2、在VS2005中C#编写的COM组件,使用...其中每个类型都写了两个程序,一个为COM组件程序,一个为C++和C#相互调用COM组件调用程序 程序实现: 1、在VS2005中
  • C#调用COM组件

    万次阅读 2009-02-23 12:56:00
    这部分描述了在托管代码中调用COM组件的方法,现存的COM组件在托管代码中作为中间件或者独立的功能实体是很有价值的资源向.NET Framework报露COM组件1. Import a type library as an assemblyCOM的类型定义通常在...
  • java调用com对第三方软件进行操作

    千次阅读 2016-12-06 11:43:12
    给出的得是com接口 ,于是我们选择使用java调用com完成操作 java调用com有几种jar包可以使用 如jacob(java com bridge),jawin(貌似2005年是最后的更新时间),com4j(貌似是对企业级客户收费,1999刀) 我们...
  • python调用com以及com事件

    千次阅读 2004-09-14 08:46:00
    python调用com以及com事件作者:梅劲松 Email:stephen.cn@gmail.com时间:2004年9月13日感谢:刘鑫python调用有事件发生的com时,需要一些技巧。 我们以ie这个com为例来讲解一下我的经验。 首先我们需要pywin32这个...
  • VC调用COM的方法总结

    千次阅读 2012-08-06 11:37:51
    转载请标明是引用于 http://blog.csdn.net/chenyujing1234    源码下载地址(采用VS2005+Win32): ...   在文章采用ATL模型代替lib dll 的调用>>中我介绍了VC中调用COM的两种方法:
  • C++调用com控件方法

    千次阅读 2011-03-24 10:40:00
    最近要求做一个C++调用com组件的DEMO。由于自己对C++并无研究包括IDE工具。后来在网上查阅了些资料,经过努力终于告一段落。 网上对于C++加载com组件的方法已经说的很多了,我就仅贴下我所使用的方法(不用注册dll...
  • QT调用COM组件

    千次阅读 2015-11-22 05:32:59
    首先调用 CoInitialize(NULL) 初始化COM库 CoCreateInstance(....) 创建COM对象并获得接口 使用使用释放COM对象 最后 CoUnInitialize() 收回COM库 QAxObject 和 QAxWidget 一样,它封装的是...
  • python调用com接口问题

    2017-05-15 03:41:50
    请教下各位,用python实现VISSIM(交通仿真软件)的调用。能够打开软件,载入文件。但实现不了对API的调用,关联不到typelibaray(写代码时也没自动补全)。 代码如下:# -*- coding: utf-8 -*- import win32...
  • vc中调用Com组件的五种方法详解

    万次阅读 2016-02-19 10:38:50
    vc中调用Com组件的方法详解 转载自:http://www.cppblog.com/woaidongmao/archive/2011/01/10/138250.html 需求: 1.创建myCom.dll,该COM只有一个组件,两个接口:  IGetRes--方法Hello(),  IGetResEx--方法...
  • Java调用dll Java调用COM组件

    千次阅读 2013-12-05 10:48:43
    JNative调用dll很方便,只是需要dll有导出函数,否则调不到。就是说要调用的方法必须是导出函数。如果不知道你的dll有没有这个导出函数,可下载这个软件查看——DLL函数查看器。 下载JNative开源项目(百度之),...
  • Flex air 中调用com组件的方法

    千次阅读 2011-03-30 11:41:00
     air中直接调用com组件是很难做到的,但我们可以通过FluorineFx Aperture框架很轻松的调用com组件。aperture框架下载地址:http://aperture.fluorinefx.com/ 下载后我们可以看到其实现的源码,以及开发示例。...
  • C#如何远程调用com+..

    2016-11-24 06:05:13
    最好给个例子,弄过的帮忙看看这个怎么写,百度这方面资料有点少啊.感谢.
  • Delphi6调用COM组件的方法

    千次阅读 2008-09-10 11:56:00
    1.调用普通COM组件 Project->Import type library...->选中要调用COM组件->Create Unit ,记住类的名称 var test : Txx; test := Txx.Create(nil);test.Show;test := nil; 2.调用带有连接点的COM组件Project->Im
  • c++ 调用com组件步骤

    千次阅读 2018-04-24 16:11:57
    2、#import "对应的com组件DLL"  using namespace 命名空间; 或者 no_namesapace; 3、从注册表中找到对应的CLSID  CLSID clsid;  HRESULT hr = CLSIDFromProgID(OLESTR("注册表中对应com组件实现类"), &cl
  • JavaScript调用COM接口说明

    千次阅读 2015-12-24 14:55:37
    我们在开发COM组件给js调用时,需要提供给js的是COM接口的CLASSID,而不是组件的classid。如下为COM组件的一个idl文件:// FuckATL.idl : FuckATL 的 IDL 源 //// 此文件将由 MIDL 工具处理以 // 产生类型库(FuckATL....
  • QT应用编程: windows下QT调用COM组件

    千次阅读 2021-01-22 11:04:55
    理论上任何语言生成的COM组件调用流程应该都是一样的。 QT创建COM的方法看这里: (1)VS2017下使用QT生成COM组件: https://blog.csdn.net/xiaolong1126626497/article/details/112556866 (2)...
  • Jacob调用COM组件总结,实例

    万次阅读 2010-03-26 10:08:00
    最近做了一个Java Jacob调用COM组件的东西,其中遇到了不少问题,现在把经验总结一下和大家分享。 1.Jacob安装 Google一下,下载Jacob最新版。我这里用的是Jacob-1.15 把Jacob.jar放到你Java工程的lib目录下,引入...
  • Delphi(Lazarus)怎样不注册调用COM

    千次阅读 2012-03-20 17:27:19
    结合网络上的一片文章(具体那篇文章,你可以在百度里边找“Delphi不注册调用COM”),稍加修改,得出以下心得: 首先是CreateCom(来自网络) function CreateComObjectFromDll(CLSID: TGUID; DllHandle: ...
  • Java调用COM的中间件Jintegra初探

    千次阅读 2006-07-08 21:18:00
    最近在学习ArcServer Java ADF的开发,遇到了怎么用Java调用COM组件的问题。ArcServer是基于COM实现的ArcObjects,因为ServerAPI是粗粒度的API,为了避免遭遇性能瓶颈,推荐的解决方案是具体功能用COM组件实现,然后...
  • 我用vc6.0编写了一个普通的动态链接库dll,这个dll被一个com组件调用,实现对一些图片文件的访问等操作,最终将图片的特征输出在txt文件中。 在我的电脑上,这个com组件可以正常使用,即asp网页中调用com组件,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 117,979
精华内容 47,191
关键字:

调用com