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.增加下面属性到类
三.在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组件的工作。
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组件的工作。
相关文章推荐
- jquery .html(),.text(),.val()用法
- kuangbin带你飞 专题一 简单搜索 (题解)
- VC将日期转字符串,将字符串装日期
- 【Android】Android OOM 问题的总结
- 主成分分析算法
- 信号使用方法
- [iOS]关于视频方向的若干问题
- 信号使用方法
- Java的StringTokenizer类
- 张国祥老师应邀参加联创世纪五周年庆压轴大戏暨公司化运作高峰论坛活动
- How to use JUnit in Eclipse?
- Asp.net 按钮防止点击多次数据提交
- H264基本概念之 宏块、片和片组
- 程序员为了期权加入创业公司,值得吗?
- 三种方法解决 Failed to start LSB: Bring up/down networking 问题
- SQL语句的执行原理分析
- Python Mixin
- 112.按规定删除字符串中的字符
- org.hibernate.hql.ast.QuerySyntaxException: User is not mapped [from User]
- RC4文件加密的python实现方法