输出COM对象类型信息(从临时文件读取)

By admin at 2017-12-07 • 0人收藏 • 713人看过
//输出COM对象类型信息
import com;
import console
var fs = com.CreateObject("Scripting.FileSystemObject")
//输出com对象成员
dumpObject = function(obj) {
    var t = {};
    var file = io.tmpname();
    io.stdout.reopen(file, "w+t");
    com.DumpTypeInfo(fs)
    io.stdout.reopen("CONOUT$", "w+t")
    for line in io.lines(file) {
        var pattern = "(.+)\:\s(.+)";
        for k, v in string.gmatch(string.trim(line), pattern) {
            t[k] = string.trim(v)
        }
    }
    return t;
}
obj = dumpObject(fs);
console.dump(obj)
console.pause()

感谢群里: CodeX 分享.

这样得到数据表之后,就可以想给谁显示就给谁.

1 个回复 | 最后更新于 2018-04-04
2017-12-08   #1

写了一个完整的com组件函数并输出到edit示例:

import win.ui;
/*DSG{{*/
var winform = win.form(text="COM组件函数查看演示";right=759;bottom=455;border="dialog frame")
winform.add(
button={cls="button";text="查看该组件内置函数";left=566;top=419;right=756;bottom=450;z=3};
comEdit={cls="edit";text="ADODB.Connection";left=318;top=419;right=545;bottom=448;align="center";bgcolor=0;color=65280;edge=1;font=LOGFONT(h=-16);z=2};
funcEdit={cls="edit";left=5;top=4;right=756;bottom=416;bgcolor=0;color=65280;font=LOGFONT(name='微软雅黑';h=-14);hscroll=1;multiline=1;readonly=1;vscroll=1;z=1}
)
/*}}*/

var loadFunc = function( comMsg ){
 	import com;
	//调用COM组件
	obj = com.CreateObject( comMsg ); 
	//获取COM组件类型库信息
	var typeinfo = com.GetTypeInfo(obj)
	//准备存储获取到的类型库信息
	var funcTab = {};
	//下面直接调用函数总数目不准确,因为有写com组件里有空函数
	//winform.funcEdit.log("共有函数: "++typeinfo.GetTypeAttr().Funcs ++ " 个!",'\r\n');
	for(i=8;typeinfo.GetTypeAttr().Funcs-1;1){ 
    	table.push(funcTab,table.clone(typeinfo.GetFuncDesc(i) )); 
	}
 	for(i=1;#funcTab;1){
     	var funcPara = null;//参数合成
 		if(funcTab[i].Params != null){
 			//console.dump(funcTab[i]);
 			//总共几个变量参数
 			for(j=1;funcTab[i].Params;1){
 				var parametersTab = (funcTab[i].parameters)[j];
 				if( parametersTab != null ){
 					//console.dump(parametersTab);
 					if(j==1){
 						funcPara = string.concat(funcPara,parametersTab._com_type," ",parametersTab.name);
 					}else {
 						funcPara = string.concat(funcPara,',',parametersTab._com_type," ",parametersTab.name);
 					}
 					
 				}
 			
 			}
 			//输出
 			winform.funcEdit.log(string.concat(funcTab[i]._com_type ," ",funcTab[i].name ,"( ",funcPara , " );"),'\r\n');
 			
 		}
 	
 	}
 }
    
        
winform.button.oncommand = function(id,event){
	
	winform.funcEdit.clear();
	loadFunc(winform.comEdit.text);
	
}






winform.show() 
win.loopMessage();

blob.png

再此, 感谢群里: 王港 kio1 codex 阿法牛 indertust ...等人对我的指导!

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
Sciter中文在线文档Sciter在线学习文档
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
C大Aardio论坛:Aar爱好者论坛
简码教程网:简码编程
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...