在Delphi.net中调用COM/COM
2008-04-10 02:57:38来源:互联网 阅读 ()
客户的系统是C/S和B/S的结合,B/S部分原来计划用IntraWeb,
刚好Delphi.net出现,所以B/S部分改用Delphi.net;
在开发过程中出现了一个问题:加密算法是Delphi 7开发的,
时间太紧不可能用Delphi.net重写加密算法,于是想到COM/COM ,
只可惜Delphi.net资料很少,与COM/COM 互操作的资料就更少了。
于是自己摸索,便有下文(源码附后):
1,在Delphi 7中建立COM/COM
(1)在IDE中File -> New -> Other -> ActiveX -> ActiveX Library,
将工程文件保存为ComProject;
(2)在IDE中File -> New -> Other -> ActiveX -> COM Object,
在Class Name栏填上Test,该单元保存为Test;
(3)在IDE中View -> Type Library给ITest加一个名为GetMsg的过程;
(4)Ctrl F9;
(5)在IDE中Run -> Register ActiveX Server; // 注册COM/COM 也可用命令行
2, 在Delphi.net中调用COM/COM
(1)在IDE中File -> New -> ASP.NET Web Application,
可能会遇到很多麻烦要你自己搞定哦!
(2)添加COM/COM 的引用:
在IDE中Project ->Add Reference -> COM Imports,
选中刚才注册的ComProject,点击Add Reference 添加引用,
单击OK(要注意你的项目文件(ASP.NET Web Application)
的路径(Path)不能使用中文哦);
(3)在WebForm1得uses中添加ComProject;
(4)调用COM/COM
在WebForm1上方上两个Web Control:一个Button,一个Label;
双击Button,在过程中写上:
var
Msg: string;
Obj: TObject;
begin
Obj := Server.CreateObject(''''ComProject.Test''''); // 建立COM/COM
Test(Obj).GetMsg(Msg); // 将Obj转换为Test,调用GetMsg方法;
Label1.Text := Msg;
end;
(5)在WebForm1.aspx的Page行中加上Aspcompat="true",
如:<%@ Page language="c#" Debug="true" Codebehind="WebForm1.pas" AutoEventWireup="false" Inherits="WebForm1.TWebForm1" Aspcompat="true"%>
(6)Ctrl F9,Run ->Run(或者Run Without Debugging);
(7)在网页中点击Button,是不是搞定了!
// 以下为源码部分:
COM/COM 工程文件(ComProject.dpr):
library ComProject;
uses
ComServ,
ComProject_TLB in ''''ComProject_TLB.pas'''',
Test in ''''Test.pas'''' {Test: CoClass};
exports
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer,
DllUnregisterServer;
{$R *.TLB}
{$R *.RES}
begin
end.
//COM/COM 的Test单元(Test.pas):
unit Test;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
Windows, ActiveX, Classes, ComObj, ComProject_TLB, StdVcl;
type
TTest = class(TTypedComObject, ITest)
protected
function GetMsg(out Msg: WideString): HResult; stdcall;
{Declare ITest methods here}
end;
implementation
uses ComServ;
function TTest.GetMsg(out Msg: WideString): HResult;
begin
Msg := ''''Com/Com 测试成功!'''';
end;
initialization
TTypedComObjectFactory.Create(ComServer, TTest, Class_Test,
ciMultiInstance, tmApartment);
end.
//COM/COM 的类型库t单元(ComProject_TLB.pas):
unit ComProject_TLB;
// ************************************************************************ //
// WARNING
// -------
// The types declared in this file were generated from data read from a
// Type Library. If this type library is explicitly or indirectly (via
// another type library referring to this type library) re-imported, or the
// ''''Refresh'''' command of the Type Library Editor activated while editing the
// Type Library, the contents of this file will be regenerated and all
// manual modifications will be lost.
// ************************************************************************ //
// PASTLWTR : 1.2
// File generated on 2004-2-6 13:28:46 from Type Library described below.
// ************************************************************************ //
// Type Lib: D:\Program Files\Borland\Delphi7\Projects\comtest2\ComProject.tlb (1)
// LIBID: {92B46A1D-8A31-46C5-98FE-C03FEA98DC21}
// LCID: 0
// Helpfile:
// HelpString: ComProject Library
// DepndLst:
// (1) v2.0 stdole, (D:\WINDOWS\system32\stdole2.tlb)
// ************************************************************************ //
{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers.
{$WARN SYMBOL_PLATFORM OFF}
{$WRITEABLECONST ON}
{$VARPROPSETTER ON}
interface
uses Windows, ActiveX, Classes, Graphics, StdVCL, Variants;
// *********************************************************************//
// GUIDS declared in the TypeLibrary. Following prefixes are used:
// Type Libraries : LIBID_xxxx
// CoClasses : CLASS_xxxx
// DISPInterfaces : DIID_xxxx
// Non-DISP interfaces: IID_xxxx
// *********************************************************************//
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:资源文件的应用
下一篇:发布delphi代码时的注意事项
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash