Delphi程序调用C#.Net编译的DLL并打开窗体(详解)
Delphi程序调用C#.Net编译的DLL并打开窗体(详解)
2、使用强名称签名的Key编译成类库Tester.DLL 3、生成类型库 (此tlb文件提供给Delphi导入, 使用OLE方式调用此步可省略了)
reg.bat 文件内容: sn -k MyKey.snk csc /t:library /keyfile:MyKey.snk Tester.cs tlbexp Tester.dll /out:Tester.tlb regasm Tester.DLL /regfile:Tester.reg 且看运行效果: Delphi程序Project1.exe (图片中英文拼写错误,不想改了,sorry!) 点Call DLL按钮成功打开.Net窗体,测试通过! 注意: 开发环境中必须在Visual Studio 2008命令提示中运行reg.bat!!! 如下图: 两种可能的错误提示及解决方案: 1. 出现以下提示说明没有注册COM组件, 请运行Tester.reg. 2. 出现以下提示说明您调用了一个没有签名的.Net方法(无参方法) Tester程序: C# Code: /// <summary> /// 测试类. 请给所有方法提供一个参数,即使是无用的签名 /// </summary> public class Tester { public string GetMyKey(int param) { return "Key:www.csframework.com"; } public string GetMyName(string input) { return "Jonny Sun" ":" input; } public int GetMyAge(string yourName) { return 33; } /// <summary> /// 显示消息并打开窗体 /// </summary> /// <param name="msg">消息</param> /// <returns></returns> public int ShowMessage(string msg) { MessageBox.Show(msg); frmTest.Execute(msg);//打开窗体 return 100; } /// <summary> /// 无签名(参数)的方法给Delphi调用,调用失败,Delphi程序会抛出异常。 /// </summary> /// <returns></returns> public int CallMethodWithNoSign() { return -1; } } // 来源:www.CSFramework.com, C/S结构框架学习网 Delphi Code:
procedure TForm1.Button1Click(Sender: TObject); var OBJ: Variant; //OLEVariant Type. ResultValue: string; //Value returned from C# i:Integer;//Value returned from C# begin try try OBJ := CreateOleObject('Dll4DelphiCall.Tester'); //Test a function with signature. ResultValue := OBJ.GetMyAge('JONNY!'); ResultValue := OBJ.GetMyKey(0); i:=OBJ.ShowMessage('Call CSharp Window....(Sender:Delphi Form)'); end; // 来源:www.CSFramework.com, C/S结构框架学习网 扫一扫加作者微信 原创作品,如转载请注明本文来自C/S框架网 www.csframework.com Delphi/C#源码下载:
参考文档:
C#调用Delphi编译的DLL函数库返回大文本数据 C#调用C++编译的DLL详解 C#.Net 调用Delphi 编译的ActiveX COM组件(原) 标签:C#.Net组件开发 - 属性窗体内显示自定义名称 C#.NET 监视操作系统打开程序(使用Window消息实现全局系统勾子) C#.Net组件开发(高级篇) - 设计时在窗体设计器文件内生成组件的代码 打开窗体并传入参数 C#使用Process类运行外部程序,已运行的程序自动还原主窗体 C# 调用API枚举窗体,根据标题还原窗体 关于frmBaseChild.SetParameter方法说明与使用,打开窗体传入参数例子 通过反射,调用DLL程序集某个类的静态方法打开窗体 跨模块打开窗体,支持传入参数加载不同类型的数据 C#.NET VS2015运行时调试Windows服务(宿主)承载的WCF程序 C#.NET WEBAPI 接口设计与调用 C#.NET WEBAPI 接口设计-调用多个参数的接口
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |