對於現在使用PB和.NET同時開發的項目,現在.NET已經有的功能,想在PB下調用,只能把.NET做成COM組件,再在PB中調用。
方法如下:
一.在.NET中新建類庫
二.註冊類庫
三.在PB中調用
下面詳細介紹一下:以.NET2005和PB11.5爲例
一、在.NET中新建類庫
1.打開Microsoft Visual Studio 2005
2.新建類庫項目:點文件-->新建-->項目,在打開窗口選擇類庫
3.添加代碼:
新建後出現一個Class1.cs的類庫文件,打開,修改成代碼如下:
using System;
using System.Collections.Generic;
using System.Text;
namespace demo
{
public class Class1
{
public int AddTenToParameter(int param1)
{
return param1 + 10;
}
public void SayHi()
{
System.Windows.Forms.MessageBox.Show("Hello World!");
}
public String GiveMeDate()
{
return DateTime.Now.ToLongDateString();
}
}
}
4.添加引入,因爲MessageBox需要Form組件。
5.修改項目屬性,點項目,右鍵,選屬性。
在“生成”TAB屬性頁中選中“爲COM Iterop註冊”
using System.Runtime.InteropServices;
7.增加下面屬性到類
[ComVisible(true)] [ClassInterface(ClassInterfaceType.AutoDual)] [ProgId("demo.Class1")]
現在類庫就完成了,可以編譯使用了。如要修改ProgId可以在AssemblyInfo.cs 進行修改。
二.註冊類庫
使用regasm進行註冊
命令如下:regasm demo.dll /tlb:demo.tlb
三.在PB中調用
在程序中用以下代碼
int return_code
return_code = example.ConnectToNewObject("demo.Class1")
if return_code <> 0 then
destroy example
messagebox('錯誤','打開OLE出錯!')
return
else
example.sayhi()
int v = 20
messagebox('result',v)
string s
s = example.givemedate()
messagebox('result',s)
end if
現在就完成了在PB中調用.NET組件的工作。