13794993971
论坛版主
论坛版主
  • 发帖数51
  • QQ123523507
  • 金币613两
  • 威望194点
  • 钻石0枚
  • 注册日期2016-11-12
  • 最后登录2020-04-01
  • 社区居民
阅读:14156回复:2

[资源分享]tiptop Windows COM 支持

楼主#
更多 发布于:2016-11-29 14:34
什么是com ?
COM是Component Object Model (组件对象模型)的缩写
COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM与语言,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块;等等.
COM所含的概念并不止是在Microsoft Windows操作系统下才有效。COM并不是一个大的API,它实际上象结构化编程及面向对象编程方法那样,也是一种编程方法。在任何一种操作系统中,开发人员均可以遵循"COM方法"。
补充:COM组件由以Win 32动态连接库(DLL)或可执行文件(EXE)形式发布的可执行代码所组成。遵循COM规范编写出来的组件将能够满足对组件架构的所有要求。COM组件可以给应用程序、操作系统以及其他组件提供服务;自定义的COM组件可以在运行时刻同其他组件连接起来构成某个应用程序;COM组件可以动态的插入或卸出应用。


GENERO提供的COM支持函数:
函数名称 说明
CreateInstance 创建一个 COM object对象
CallMethod 调用COM中的方法
GetProperty 获取COM对象的一个属性
SetProperty 设定一个COM对象的属性
GetError 获取COM返回的错误信息
ReleaseInstance 释放COM



CreateInstance
作用:创建一个 COM object对象,类似其他高级语言的new,在调用任何COM对象前,必须先创建一个COM对象。
语法:

CALL ui.Interface.frontCall("WinCOM","CreateInstance", [  program ], [handle] )

program:COM对象名称
handle:返回的句柄,GENERON中一般使用INTEGER整数类型保存
说明:handle必须是INTEGER

如果handle返回-1,则代表出现错误,CreateInstance创建时错误多半是创建对象失败
例如:
创建一个EXCEL对象

CALL ui.Interface.frontCall("WinCOM", "CreateInstance", ["Excel.Application"], [xlapp])

创建一个IE对象

CALL ui.Interface.frontCall("WinCOM", "CreateInstance", ["InternetExplorer.Application"], [ieapp])

备注:任何在windows中注册的com都可以被创建


GetProperty

作用:获得一个COM中的属性
语法:

CALL ui.Interface.frontCall("WINCOM","GetProperty", [ handle, member ], [result] )

handle:第一步创建的对象句柄
member:需要获得的属性名
result:返回获得的属性
说明:用于接收COM属性的参数必须是STRING值,CHAR,VCHAR都不行
例如:

#获得EXCEL表中当前活动的工作表A1单元格的值
CALL ui.Interface.frontCall("WinCOM", "GetProperty", [xlwb, 'activesheet.Range("A1").Value'], [result])


SetProperty
作用:设定一个COM中的属性
语法:

CALL ui.Interface.frontCall("WINCOM","SetProperty", [handle, member, value], [result] )

handle:第一步创建的对象句柄
member:需要获得的属性名
value:设定的属性值
result:返回执行结果
说明:value必须是STRING类型,result必须是INTEGER整数类型
例如:




#让工作薄显示
CALL ui.interface.frontCall("WinCOM", "SetProperty",[xlapp, "Visible", true], [result])
#将sheet1工作表A1单元格设定值”tiptop100”
CALL ui.Interface.frontCall("WinCOM","SetProperty",[xlapp,"Worksheets('Sheet1').Range('A1').Value", "tiptop100",[result])






GetErro
作用:获得错误信息
语法:

CALL ui.Interface.frontCall("WINCOM","GetError", [], [result] )

result:接收错误值的变量

例如:CALL ui.Interface.frontCall("WinCOM","GetError",[],[mess])




ReleaseInstance
作用:释放COM对象
语法:

CALL ui.Interface.frontCall("WINCOM","ReleaseInstance", [handle], [result] )

handle:第一步创建的句柄
result:执行结果
例如:

CALL ui.Interface.frontCall("WinCOM","ReleaseInstance", [xlwb], [res] )






例如操作EXCEL COM对象
  
CALL ui.Interface.frontCall("WinCOM", "CreateInstance", ["Excel.Application"], [xlapp])
    CALL ui.interface.frontCall("WinCOM", "CallMethod",[xlapp, "WorkBooks.Add"], [xlwb])
    CALL ui.interface.frontCall("WinCOM", "SetProperty",[xlapp, "Visible", true], [result])
    #单元格填充内容
   CALL ui.Interface.frontCall("WinCOM", "SetProperty", [xlapp, 'Worksheets("Sheet1").Range("A1").Value',”abc”],[result])
   #合并单元格
   CALL ui.interface.frontCall("WinCOM", "CallMethod",[xlapp, 'Worksheets("Sheet1").Range("'A1:A2'").Merge'], [xlwb])
   #设定行高
CALL ui.interface.frontCall("WinCOM", "SetProperty",[xlapp, 'Worksheets("Sheet1").Rows("2:2").RowHeight',"30"], [result])
  #设定列宽
CALL ui.interface.frontCall("WinCOM", "SetProperty",[xlapp, 'Worksheets("Sheet'||p_book||'").Columns("A:A").ColumnWidth',"3.3"], [result])
#设定单元格底色为黄色
CALL ui.interface.frontCall("WinCOM", "SetProperty",[xlapp, 'Worksheets("Sheet1").Range("A01'").Interior.ColorIndex',"6"], [result])
#添加线框
CALL ui.interface.frontCall("WinCOM", "SetProperty",[xlapp, 'Worksheets("Sheet1").Range('A2:A10').Borders.LineStyle',"xlContinuous"], [result])
#释放对象
CALL ui.Interface.frontCall("WinCOM","ReleaseInstance", [xlwb], [res] )
CALL ui.Interface.frontCall("WinCOM","ReleaseInstance", [xlapp], [res] )
参与人数:1 人, 金币 +5 
  • 金币 +5
    助人为快乐之本~
    2017-01-18 10:10
喜欢3 评分1

最新喜欢:

LocustLocust charny.cheng@qq.comcharny... PerryPerry
官方QQ群:481859105  

13794993971
论坛版主
论坛版主
  • 发帖数51
  • QQ123523507
  • 金币613两
  • 威望194点
  • 钻石0枚
  • 注册日期2016-11-12
  • 最后登录2020-04-01
  • 社区居民
沙发#
发布于:2016-12-02 18:44
6666
官方QQ群:481859105  

回复(0) 喜欢(0)     评分
Perry
管理员
管理员
  • 发帖数213
  • QQ396572376
  • 金币41343两
  • 威望11335点
  • 钻石8888枚
  • 注册日期2016-11-09
  • 最后登录2024-01-30
  • VIP会员
  • 荣誉会员
  • 优秀斑竹
  • 最爱沙发
  • 原创写手
  • 社区居民
板凳#
发布于:2017-01-18 10:10
厉害了 这么详细!
官方QQ群:556775727  
回复(0) 喜欢(0)     评分
游客

返回顶部