//COM 类名列表
import win.ui;
import win.ui.menu;
import fonts.fontAwesome;
/*DSG{{*/
var winform = win.form(text="系统已注册 COM 类名列表( 点列标题排序,双击列显示编辑框,右键菜单查看对象文档 )";right=1109;bottom=656;bgcolor=0xFFFFFF;)
winform.add(
listview={cls="listview";left=17;top=40;right=1094;bottom=640;acceptfiles=1;asel=false;bgcolor=0xFFFFFF;db=1;dl=1;dr=1;dt=1;edge=1;font=LOGFONT(name='SimSun');fullRow=1;gridLines=1;hide=1;msel=false;z=1};
plusLoading={cls="plus";left=372;top=188;right=743;bottom=450;color=15780518;db=1;dl=1;dr=1;dt=1;font=LOGFONT(h=-96;name='FontAwesome');iconStyle={font=LOGFONT(h=-96;name='FontAwesome')};iconText='\uF254';z=2};
plusSearch={cls="plus";left=690;top=6;right=1094;bottom=36;align="right";autohscroll=false;autovscroll=false;border={bottom=1;color=-4144960};dr=1;dt=1;editable=1;font=LOGFONT(h=-13);hide=1;textPadding={top=10;bottom=3};valign="top";z=3}
)
/*}}*/
winform.listview.insertColumn("类名",250)
winform.listview.insertColumn("CLSID",250)
winform.listview.insertColumn("控件",70)
winform.listview.insertColumn("描述",70)
winform.listview.insertColumn("路径",-1)
thread.invoke(
function(winform){
import win.reg;
import win.guid;
winform.plusLoading.hide = false;
winform.plusSearch.hide = true;
winform.listview.hide = true;
winform.plusLoading.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250'}
var items = {};
var progIds = {}
var onOpenRegClsId = function(regClsId,clsId){
var regClsIdProgId = regClsId.open("ProgID",true)
if(regClsIdProgId){
var progId = regClsIdProgId.queryValue("")
if(progId && !progIds[progId]){
progIds[progId] = true;
var description;
var regProgId = win.regReader("HKEY_CLASSES_ROOT\"+progId)
if(regProgId){
description = regProgId.queryValue("");
regProgId.close();
}
var path
var regServer32 = regClsId.open("InprocServer32",true) || regClsId.open("LocalServer32",true)
if(regServer32){
path = regServer32.queryValue("");
regServer32.close();
}
var clsIdKeys = regClsId.keys();
table.push(items,{progId;clsId;
(table.find(clsIdKeys,"Control")||table.find(clsIdKeys,"ToolboxBitmap32"))?"是":"否";
description||"";
path||"";
});
}
regClsIdProgId.close()
}
regClsId.close()
}
var clsIds = {}
var reg = win.regReader("HKEY_CLASSES_ROOT\CLSID\")
for(clsId,writetime in reg.eachKey() ){
if(!string.match(clsId,"%{}")){
continue ;
}
try{
var regClsId = reg.open(clsId,true);
if(regClsId) onOpenRegClsId(regClsId,clsId);
clsIds[clsId] = true;
}
}
var reg = win.regReaderWow64("HKEY_CLASSES_ROOT\CLSID\")
for(clsId,writetime in reg.eachKey() ){
if(!string.match(clsId,"%{}")){
continue ;
}
if(clsIds[clsId]){
continue ;
}
try{
var regClsId = reg.open(clsId,true);
if(regClsId) onOpenRegClsId(regClsId,clsId);
}
}
..table.sort(items,lambda(a) owner[1]a[i])
}
else {
..table.sort(itemData,lambda(a) owner[sortColumn]