您的位置:首页 > 其它

PB 调用.NET COM组件

2015-06-30 12:29 141 查看
今天需要作一下pb引用.net的外接程序类。反复测试都没有成功。看到这篇文章解决了我的问题。在此感谢。综合我的碰壁经验。需要注意以下两点。

1..net项目需要勾选生成 com组件。

2.在类名前加上标识。

以下是对原文章的转载:
http://blog.sina.com.cn/s/blog_53d716150100kp2k.html
****************************************************************

对于现在使用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注册






6.在Class1.cs中增加引入

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组件的工作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: