做个备份,以后方便查看,粗略写下。
1、首先是新建一个C#类库工程过程不详述。
Demo代码如下:
namespace ClassIDTest
{
public class AddCal
{
public int add (int a , int b)
{
return a + b;
}
}
}
修改AssemblyInfo.cs文件内容。
[assembly: ComVisible ( true )] 值改为true
编译该工程,生成dll文件为:ClassIDTest.dll
新建bat文件,内容为:regasm ClassIDTest.dll /tlb:ClassIDTest.tlb /codebase
该过程为注册过程,以便vbscript使用。
vbscript中输入如下内容:
Set o = CreateObject("ClassIDTest.mcMathComp")
MsgBox o.add(1,9)
执行结果为10.
QTP中输入上述代码也运行结果也一样。
第二种方法是利用Extern object
可以利用Extern.Declare 声明,如下面所示:
Extern.Declare micInteger , "Add", "D:/program/ClassIDTest/ClassIDTest/bin/Debug/ClassIDTest.dll", "Add", micInteger, micInteger
res = Extern.Add(1,9)
Msgbox res
add为dll文件中的函数,Add为sum所命的别名;
第三种方法是利用DotNetFactory对象
在QTP中为访问.net对象,专门提供了DotNetFactory对象。通过DotNetFactory可以访问.NET对象的属性和方法。
Set obj = DotNetFactory.CreateInstance("ClassIDTest.mcMathComp", "D:/program/ClassIDTest/ClassIDTest/bin/Debug/ClassIDTest.dll")