首页 新闻 会员 周边

C# 调用注册表的CLSID,并实例化,并且调用到里面的方法

0
悬赏园豆:40 [已解决问题] 解决于 2013-03-26 12:39

需求背景:公司目前在做一个金税打印的功能,存在一个问题,每次调用打印都会产生一个实例,而金税打印的插件有不能有多个实例,否则会报错。所以现在想出一个办法,就是通过C#编写一个ActiveX插件(相当于适配器的功能),通过C#编写的插件,来调用金税插件,采用单例模式,控制它只生成一个实例,目前存在如下问题:

1、怎么调用CLSID
2、调用到CLSID之后,怎么给他实例化
3、实例化之后,我怎么创建一个对应的类(如果是Object类型,那么这个实例就调用不到CLSID里面特有的那些属性了)

 

参考代码如下:

/// <summary>
/// 创建金税插件的对象
/// </summary>
/// <param name="clsid">金税插件的ClsId</param>
/// <returns></returns>
private static object GetActiveXObject(Guid clsid)
{
    Type t = Type.GetTypeFromCLSID(clsid);
    if (t == null)
    {
        return null;
    }
    return Activator.CreateInstance(t);
}

 

该代码创建出来的对象是Object类型的,所以没有金税插件应该有的属性和方法

请高手们提提建议该怎么解决?

如果说我的思路有问题,欢迎纠正!

问题补充:

简单的说,就是一个问题

Activator.CreateInstance

创建出来的对象,怎么使用

zhengjinfeng的主页 zhengjinfeng | 初学一级 | 园豆:90
提问于:2013-02-19 13:37
< >
分享
最佳答案
1

直接vs中引用.每必要那么麻烦

收获园豆:40
56180825 | 小虾三级 |园豆:1756 | 2013-02-19 13:47

可以这样吗,那个CLSID是安装了金税插件才有的,VS怎么直接引用

zhengjinfeng | 园豆:90 (初学一级) | 2013-02-19 14:00

@zhengjinfeng: 装那个插件然后在引用进去.VS会根据插件自动产生DLL,你可以直接使用

56180825 | 园豆:1756 (小虾三级) | 2013-02-19 19:13

@56180825: 那个插件不是标准的COM组件,没法直接引用的

zhengjinfeng | 园豆:90 (初学一级) | 2013-02-20 08:34

@zhengjinfeng: 那用反射吧.别无他法.或者你索性用VB6.0

56180825 | 园豆:1756 (小虾三级) | 2013-02-20 19:36
其他回答(1)
0

其实里面的方法是可以调用到的,只是在IE里面调试JS的时候看不到而已。

 

例如:里面有个Text属性,我直接obj.Text是可以调用到的,只是看不到,就像是预定义的一个内置属性,这可能就是ActiveX创建的js对象,跟直接在js代码里面创建的对象一个不同点吧

zhengjinfeng | 园豆:90 (初学一级) | 2013-03-26 12:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册