如何使用Delphi编写可用于ASP等程序的DLL文件?在线等. 用Delphi可以写DLL文件吗?

Delphi\u5982\u4f55\u628a.dll\u6587\u4ef6\u653e\u5165.exe\u7a0b\u5e8f\u4e2d

\u8d44\u6e90\u6587\u4ef6\u7b80\u5355\u5236\u4f5c\u65b9\u6cd5\uff1a
1\u3001\u65b0\u5efa\u4e00\u4e2a\u6587\u672c\uff0c\u6539\u540d\u5b57\u4e3a
jixingfei.rc
2\u3001\u5199\u5165
udlfile
udl
"export.udl"
\u7136\u540e\u4fdd\u5b58
\u6587\u4ef6\u7f16\u53f7
\u6587\u4ef6\u7c7b\u578b
\u6587\u4ef6\u540d\u79f0
3\u3001\u628abrcc32.exe\u548cjixingfei.rc\u653e\u5728\u540c\u4e00\u4e2a\u6587\u4ef6\u5939\u4e0b\uff0c\u5728dos\u4e2d\u8fd0\u884c
\u5982\u4e0b\u547d\u4ee4\u884c\uff1abrcc32
jixingfei.rc
\u5f97\u5230\u8d44\u6e90\u6587\u4ef6
jixingfei.res
4\u3001\u5728\u7a0b\u5e8f\u4e2d\u5f15\u7528jixingfei.rc
{$R
jixingfei.res}
5\u3001\u5728\u7a0b\u5e8f\u4e2d\u8fd8\u539f\u6587\u4ef6\u51fd\u6570\uff1a
procedure
MusicResToFile(const
ResName,
ResType,FileName:
string);
var
Res:
TResourceStream;
begin
Res
:=
TResourceStream.Create(HInstance,ResName,
PChar(ResType));
Res.SaveToFile(FileName);
//\u5c06\u8d44\u6e90\u4fdd\u5b58\u4e3a\u6587\u4ef6\uff0c\u5373\u8fd8\u539f\u6587\u4ef6
//\u4f60\u8fd8\u53ef\u4ee5\u8fdb\u884c\u5176\u5b83\u7684\u6d41\u64cd\u4f5c\uff0c\u5728\u5185\u5b58\u4e2d\u5b9e\u73b0\u5bf9\u8d44\u6e90\u5229\u7528\u800c\u4e0d\u5fc5\u53e6\u5b58\u4e3a\u6587\u4ef6
Res.Free;
end;
\u6216\u76f4\u63a5\u8fd8\u539f
procedure
tform1.button1click;
var
res:tresourcestream;
begin
Res
:=
TResourceStream.Create(HInstance,'udlfile',
PChar('udl'));
Res.SaveToFile('udlfile');
res.free;
end;
\u8fd9\u4e2a\u662f\u6211\u7684\u535a\u5ba2\u91cc\u9762\u7684\u6587\u7ae0
\u4f60\u4fee\u6539\u4e00\u4e0b
\u5c31\u53ef\u4ee5\u4e86
\u90a3\u4e2abrcc32.exe
\u4f60\u53ef\u4ee5\u641c\u7d22\u4e00\u4e0b
\u8fd9\u4e2a\u662f\u6211\u505a\u6570\u636e\u5e93\u7684\u65f6\u5019\u7528\u5230\u7684\u4e00\u6bb5\u5c0f\u7a0b\u5e8f
\u4f60\u628a\u90a3\u4e2audl
\u6587\u4ef6\u6362\u6210\u4f60\u7684dll\u6587\u4ef6\u5c31\u53ef\u4ee5\u4e86
\u8c22\u8c22
\uff0c\u8bf7\u5728\u80fd\u7528\u4e4b\u540e\u7ed9\u5c0f\u5f1f\u52a0\u5206
\u6709\u4e0d\u660e\u767d\u7684\u5730\u65b9
\u7ed9\u6211\u7559\u8a00
\u6211\u5929\u5929\u5728\u7ebf\u4e0a\u7b49\u7740\u62ff\u4f60\u7684\u5206\u5462
\uff0c\u8fd8\u6709\uff0c\u4f60\u60f3\u7528\u5b8c\u4e4b\u540e\u5220\u9664\u6389\uff0c\u4e5f\u5f88\u7b80\u5355\uff0c\u7528
delete\u51fd\u6570\u5c31\u53ef\u4ee5\u4e86

Delphi\u5236\u4f5cDLL
\u4e00 Dll\u7684\u5236\u4f5c\u4e00\u822c\u6b65\u9aa4
\u4e8c \u53c2\u6570\u4f20\u9012
\u4e09 DLL\u7684\u521d\u59cb\u5316\u548c\u9000\u51fa\u6e05\u7406[\u5982\u679c\u9700\u8981\u521d\u59cb\u5316\u548c\u9000\u51fa\u6e05\u7406]
\u56db \u5168\u5c40\u53d8\u91cf\u7684\u4f7f\u7528
\u4e94 \u8c03\u7528\u9759\u6001\u8f7d\u5165
\u516d \u8c03\u7528\u52a8\u6001\u8f7d\u5165
\u4e03 \u5728DLL\u5efa\u7acb\u4e00\u4e2aTForM
\u516b \u5728DLL\u4e2d\u5efa\u7acb\u4e00\u4e2aTMDIChildForM
\u4e5d \u793a\u4f8b\uff1a
\u5341 Delphi\u5236\u4f5c\u7684Dll\u4e0e\u5176\u4ed6\u8bed\u8a00\u7684\u6df7\u5408\u7f16\u7a0b\u4e2d\u5e38\u9047\u95ee\u9898\uff1a
\u5341\u4e00 \u76f8\u5173\u8d44\u6599

\u4e00 Dll\u7684\u5236\u4f5c\u4e00\u822c\u5206\u4e3a\u4ee5\u4e0b\u51e0\u6b65\uff1a
1 \u5728\u4e00\u4e2aDLL\u5de5\u7a0b\u91cc\u5199\u4e00\u4e2a\u8fc7\u7a0b\u6216\u51fd\u6570
2 \u5199\u4e00\u4e2aExports\u5173\u952e\u5b57\uff0c\u5728\u5176\u4e0b\u5199\u8fc7\u7a0b\u7684\u540d\u79f0\u3002\u4e0d\u7528\u5199\u53c2\u6570\u548c\u8c03\u7528\u540e\u7f00\u3002
\u4e8c \u53c2\u6570\u4f20\u9012
1 \u53c2\u6570\u7c7b\u578b\u6700\u597d\u4e0ewindow C++\u7684\u53c2\u6570\u7c7b\u578b\u4e00\u81f4\u3002\u4e0d\u8981\u7528DELPHI\u7684\u6570\u636e\u7c7b\u578b\u3002
2 \u6700\u597d\u6709\u8fd4\u56de\u503c[\u5373\u4f7f\u662f\u4e00\u4e2a\u8fc7\u7a0b]\uff0c\u6765\u62a5\u51fa\u8c03\u7528\u6210\u529f\u6216\u5931\u8d25\uff0c\u6216\u72b6\u6001\u3002\u6210\u529f\u6216\u5931\u8d25\u7684\u8fd4\u56de\u503c\u6700\u597d\u4e3a1[\u6210\u529f]\u62160[\u5931\u8d25].\u4e00\u53e5\u8bdd\uff0c\u4e0ewindows c++\u517c\u5bb9\u3002
3 \u7528stdcall\u58f0\u660e\u540e\u7f00\u3002
4 \u6700\u597d\u5927\u5c0f\u5199\u654f\u611f\u3002
5 \u65e0\u987b\u7528far\u8c03\u7528\u540e\u7f00\uff0c\u90a3\u53ea\u662f\u4e3a\u4e86\u4e0ewindows 16\u4f4d\u7a0b\u5e8f\u517c\u5bb9\u3002

\u4e09 DLL\u7684\u521d\u59cb\u5316\u548c\u9000\u51fa\u6e05\u7406[\u5982\u679c\u9700\u8981\u521d\u59cb\u5316\u548c\u9000\u51fa\u6e05\u7406]
1 DLLProc[SysUtils\u5355\u5143\u7684\u4e00\u4e2aPointer]\u662fDLL\u7684\u5165\u53e3\u3002\u5728\u6b64\u4f60\u53ef\u7528\u4f60\u7684\u51fd\u6570\u66ff\u6362\u4e86\u5b83\u7684\u5165\u53e3\u3002\u4f46\u4f60\u7684\u51fd\u6570\u5fc5\u987b\u7b26\u5408\u4ee5\u4e0b\u8981\u6c42[\u5176\u5b9e\u5c31\u662f\u4e00\u4e2a\u56de\u8c03\u51fd\u6570]\u3002\u5982\u4e0b\uff1a
procedure DllEnterPoint(dwReason: DWORD);far;stdcall;
dwReason\u53c2\u6570\u6709\u56db\u79cd\u7c7b\u578b\uff1a
DLL_PROCESS_ATTACH:\u8fdb\u7a0b\u8fdb\u5165\u65f6
DLL_PROCESS_DETACH\u8fdb\u7a0b\u9000\u51fa\u65f6
DLL_THREAD_ATTACH \u7ebf\u7a0b\u8fdb\u5165\u65f6
DLL_THREAD_DETACH \u7ebf\u7a0b\u9000\u51fa\u65f6
\u5728\u521d\u59cb\u5316\u90e8\u5206\u5199:
DLLProc := @DLLEnterPoint;
DllEnterPoint(DLL_PROCESS_ATTACH);
2 \u5982Form\u4e0a\u6709TdcomConnection\u7ec4\u4ef6,\u5c31Uses Activex,\u5728\u521d\u59cb\u5316\u65f6\u5199\u4e00\u53e5CoInitialize (nil);
3 \u5728\u9000\u51fa\u65f6\u4e00\u5b9a\u4fdd\u8bc1DcomConnection.Connected := False,\u5e76\u4e14\u6570\u636e\u96c6\u5df2\u5173\u95ed\u3002\u5426\u5219\u62a5\u5730\u5740\u9519\u3002

\u56db \u5168\u5c40\u53d8\u91cf\u7684\u4f7f\u7528
\u5728widnows 32\u4f4d\u7a0b\u5e8f\u4e2d\uff0c\u4e24\u4e2a\u5e94\u7528\u7a0b\u5e8f\u7684\u5730\u5740\u7a7a\u95f4\u662f\u76f8\u4e92\u6ca1\u6709\u8054\u7cfb\u7684\u3002\u867d\u7136DLL\u5728\u5185\u5b58\u4e2d\u662f\u4e00\u4efd\uff0c\u4f46\u53d8\u91cf\u662f\u5728\u5404\u8fdb\u7a0b\u7684\u5730\u5740\u7a7a\u95f4\u4e2d\uff0c\u56e0\u6b64\u4f60\u4e0d\u80fd\u501f\u52a9dll\u7684\u5168\u5c40\u53d8\u91cf\u6765\u8fbe\u5230\u4e24\u4e2a\u5e94\u7528\u7a0b\u5e8f\u95f4\u7684\u6570\u636e\u4f20\u9012\uff0c\u9664\u975e\u4f60\u7528\u5185\u5b58\u6620\u50cf\u6587\u4ef6\u3002

\u4e94 \u8c03\u7528\u9759\u6001\u8f7d\u5165
1 \u5ba2\u6237\u7aef\u51fd\u6570\u58f0\u540d:
1)\u5927\u5c0f\u5199\u654f\u611f\u3002
2)\u4e0eDLL\u4e2d\u7684\u58f0\u660e\u4e00\u6837\u3002
\u5982\uff1a showform(form:Tform);Far;external'yproject_dll.dll';
3)\u8c03\u7528\u65f6\u4f20\u8fc7\u53bb\u7684\u53c2\u6570\u7c7b\u578b\u6700\u597d\u4e5f\u4e0ewindows c++\u4e00\u6837\u3002
4)\u8c03\u7528\u65f6DLL\u5fc5\u987b\u5728windows\u641c\u7d22\u8def\u5f84\u4e2d\uff0c\u987a\u5e8f\u662f\uff1a\u5f53\u524d\u76ee\u5f55\uff1bPath\u8def\u5f84\uff1bwindows;widows\system;windows\ssystem32;

\u516d \u8c03\u7528\u52a8\u6001\u8f7d\u5165
1 \u5efa\u7acb\u4e00\u79cd\u8fc7\u7a0b\u7c7b\u578b[\u5982\u679c\u4f60\u5bf9\u8fc7\u7a0b\u7c7b\u578b\u7684\u53d8\u91cf\u53ea\u662f\u4e00\u4e2a\u6307\u9488\u7684\u672c\u8d28\u6e05\u695a\u7684\u8bdd\uff0c\u4f60\u5c31\u77e5\u9053\u662f\u600e\u4e48\u56de\u4e8b\u4e86]\u3002\u5982\uff1a
type
mypointer=procedure(form:Tform);Far;external;
var
Hinst:Thandle;
showform:mypointer;
begin
Hinst:=loadlibrary('yproject_dll');//Load\u4e00\u4e2aDll,\u6309\u6587\u4ef6\u540d\u627e\u3002
showform:=getprocaddress(Hinst,'showform');//\u6309\u51fd\u6570\u540d\u627e\uff0c\u5927\u5c0f\u5199\u654f\u611f\u3002\u5982\u679c\u4f60\u77e5\u9053\u81ea\u52a8\u5316\u5bf9\u8c61\u7684\u672c\u8d28\u5c31\u6e05\u695a\u4e86\u3002
showform(application.mainform);//\u627e\u5230\u51fd\u6570\u5165\u53e3\u6307\u9488\u5c31\u8c03\u7528\u3002
Freelibrary(Hinst);
end;

\u4e03 \u5728DLL\u5efa\u7acb\u4e00\u4e2aTForM
1 \u628a\u4f60\u7684Form Uses\u5230Dll\u4e2d\uff0c\u4f60\u7684Form\u7528\u5230\u7684\u5173\u8054\u7684\u5355\u5143\u4e5f\u8981Uses\u8fdb\u6765[\u8fd9\u662f\u6700\u9ebb\u70e6\u7684\u4e00\u70b9\uff0c\u56e0\u4e3a\u4f60\u7684Form\u6216\u8bb8Uses\u4e86\u8bb8\u591a\u7279\u6b8a\u7684\u5355\u5143\u6216\u51fd\u6570]
2 \u4f20\u9012\u4e00\u4e2aApplication\u53c2\u6570\uff0c\u7528\u5b83\u5efa\u7acbForm.

\u516b \u5728DLL\u4e2d\u5efa\u7acb\u4e00\u4e2aTMDIChildForM
1 Dll\u4e2d\u7684MDIForm.FormStyle\u4e0d\u7528\u4e3afmMDIChild.
2 \u5728CreateForm\u540e\u5199\u4ee5\u4e0b\u4e24\u53e5\uff1a
function ShowForm(mainForm:TForm):integer;stdcall
var
Form1: TForm1;
ptr:PLongInt;
begin
ptr:=@(Application.MainForm);//\u5148\u628adll\u7684MainForm\u53e5\u67c4\u4fdd\u5b58\u8d77\u6765\uff0c\u4e5f\u65e0\u987b\u91ca\u653e\uff0c\u53ea\u4e0d\u8fc7\u662f\u66ff\u6362\u4e00\u4e0b
ptr^:=LongInt(mainForm);//\u7528\u4e3b\u8c03\u7a0b\u5e8f\u7684mainForm\u66ff\u6362DLL\u7684MainForm\u3002MainForm\u662f\u7279\u6b8a\u7684WINDOW\uff0c\u5b83\u4e13\u95e8\u7ba1\u7406Application\u4e2d\u7684Forms\u8d44\u6e90.
//\u4e3a\u4ec0\u4e48\u4e0d\u76f4\u63a5Application.MainForm := mainForm,\u56e0\u4e3aApplication.MainForm\u662f\u53ea\u8bfb\u5c5e\u6027
Form1:=TForm1.Create(mainForm);//\u7528\u53c2\u6570\u5efa\u7acb
end;
\u5907\u6ce8\uff1a\u53c2\u6570\u662f\u4e3b\u8c03\u7a0b\u5e8f\u7684Application.MainForm

\u4e5d \u793a\u4f8b\uff1a
DLL\u6e90\u4ee3\u7801\uff1a
library Project2;

uses
SysUtils,
Classes,
Dialogs,
Forms,
Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}
var
ccc: Pchar;

procedure OpenForm(mainForm:TForm);stdcall;
var
Form1: TForm1;
ptr:PLongInt;
begin
ptr:=@(Application.MainForm);
ptr^:=LongInt(mainForm);
Form1:=TForm1.Create(mainForm);
end;

procedure InputCCC(Text: Pchar);stdcall;
begin
ccc := Text;
end;

procedure ShowCCC;stdcall;
begin
ShowMessage(String(ccc));
end;

exports
OpenForm;
InputCCC,
ShowCCC;
begin
end.

\u8c03\u7528\u65b9\u6e90\u4ee3\u7801\uff1a
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
procedure OpenForm(mainForm:TForm);stdcall;External'project2.dll';
procedure ShowCCC;stdcall;External'project2.dll';
procedure InputCCC(Text: Pchar);stdcall;External'project2.dll';

procedure TForm1.Button1Click(Sender: TObject);
var
Text: Pchar;
begin
Text := Pchar(Edit1.Text);
// OpenForm(Application.MainForm);//\u4e3a\u4e86\u8c03MDICHILD
InputCCC(Text);//\u4e3a\u4e86\u5b9e\u9a8cDLL\u4e2d\u7684\u5168\u5c40\u53d8\u91cf\u662f\u5426\u5728\u5404\u4e2a\u5e94\u7528\u7a0b\u5e8f\u95f4\u5171\u4eab
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ShowCCC;//\u8fd9\u91cc\u8868\u660eWINDOWS 32\u4f4d\u5e94\u7528\u7a0b\u5e8fDLL\u4e2d\u7684\u5168\u5c40\u53d8\u91cf\u4e5f\u662f\u5728\u5e94\u7528\u7a0b\u5e8f\u5730\u5740\u7a7a\u95f4\u4e2d\uff0c16\u4f4d\u5e94\u7528\u7a0b\u5e8f\u6216\u8bb8\u4e0d\u540c\uff0c\u6ca1\u6709\u505a\u5b9e\u9a8c\u3002
end;

ASP中的ActiveX服务器组件为标准的Automation ActiveX组件,只要使用由ASP提供的接口和遵守ASP有关规则便可。Delphi 4.0作为一种高效、快速、强大的开发语言,为开发COM组件提供了很强的功能,但不知道什么原因,很少有人运用Delphi编写ASP中的ActiveX服务器组件。本文意在通过举例介绍如何运用Delphi编写ASP中的ActiveX 组件。
通过以下步骤创建ASP中的ActiveX 服务器组件:
1.创建一个ActiveX library工程
打开Delphi编辑器,选择选单中的File/New,在New Item中选择 the ActiveX 项中的ActiveX Library选项,Delphi将自动生成以下代码:
library Project1;
uses
ComServ;
exports
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer,
DllUnregisterServer;
{$R *.RES}
begin
end.
这是Delphi编译COM组件时必须的函数,DllGetClassObject函数负责将输入调用从COM库转换到相应的类工厂中;DllCanUnloadNow函数是通知OLE引擎如果没有程序引用将自动释放内存;DllRegisterServer与DllUnregisterServer函数用来登记COM服务器。总之Delphi已经为你做好了一切辅助工作,你只需用心编写主要功能模块便可。
2.在该工程中新增一个automation对象
选择Delphi编辑器选单中的File/New,在New Item中选择ActiveX 项中的Automation Object选项,系统将显示the Automation Object导向,在物件名称中输入TestObject和选择Multiple Instance选项,按OK键后系统将弹出类型编辑器,其实这时系统已经生成了两个单元(Project1—TLB.pas与unit1.pas),unit1.pas中有如下代码:
initialization
TAutoObjectFactory.Create(ComServer, TTestObject,
Class—TestObject, ciMultiInstance);
end.
这是告诉类工厂物件执行的方式与位置。
3.增加组件中的属性与方法
在类型编辑器中单击工具栏中的方法按钮增加以下方法:
OnStartPage(unk:IUnknown)
OnEndPage.
Test.
注意在增加方法OnStartPage时,在Parameters项中增加参数unk,类型为Iunknown,增加三项方法后,在类型编辑器中按Refrash键,Unit1.pas中将会出现三个函数,在每个函数下写如下程序:
procedure Ttestobject.OnStartPage(unk: IUnknown);
begin
m_scriptContext := unk as IScriptingContext;
end;
procedure Ttestobject.OnEndPage;
begin
m_scriptContext := nil;
end;
procedure Ttestobject.test;
begin
m—scriptContext.Response.Write(′ActiveX Test For Delphi′);
end;
当IIS激活一个ActiveX组件时它会自动寻找组件中是否有OnStartPage与OnEndPage方法,如果存在,服务器将在开启本ASP页时自动执行OnStartPage方法和当本ASP页所有脚本执行完毕后自动执行OnEndPage方法。
其中mscriptContext 与IScriptingContext是ASP中负责将ASP转换成HTML格式必不可少的变量与类型,因此必须将Unit1.pas文件中的Uses加上ASPTypeLibrary—TLB变成
unit unit1;
interface
uses ComObj, ActiveX, Delphi_TLB, ASPTypeLibrary—TLB, SysUtils;
ASPTypeLibrary—TLB.Pas文件可以通过类型库引入取得,打开Delphi编辑器中的选单Project/import type library 项,选择the Microsoft Active Server Pages Type library,按OK,Delphi便会自动生成一个ASPTypeLibrary_TLB.Pas。
4.编译与注册
选择Delphi编辑器中的选单Project/Compile 项编译文件,然后选择Run/Register ActiveX Server对Project1.dll文件注册。
5.在ASP文件中运用Project1.dll
在ASP文件中加入以下文字:
Set TestASP = Server.CreateObject(Project1.TestObject)
TestASP.Test
通过上面的例子,我们可以发现用Delphi编写ASP中的ActiveX服务器组件是十分容易的,加上Delphi丰富的组件与强大的功能,使我们相信运用Delphi编写特殊的ASP服务器组件,如数据库、服务器上各种信息与资源访问等,都会十分方便。
--------------------------------------------------------------------------------
(作者:孙航东 2000年12月07日 10:01)
众所周知,asp技术是我们在以internet/intranet为平台的web程序的主要技术,在asp应用程序中我们一般使用vbscripts和javascripts两种脚本语言。但是脚本语言是一种非编译的语言,其所开发的web程序存在先天的安全性、执行效率扩张性方面的问题,因此我们一般在开发web系统时用高级语言编写asp执行体,然后用脚本语言作为连接代码去调用asp执行体执行存取。在这方面由于asp技术是微软推出的,因此我们一般利用vb或vc,那么delphi程序员又如何实现呢?
在这方面笔者最近通过inrpisre的资料,实现了在delphi环境中实现asp技术的web编程,现以一个介绍如下:
1、在delphi环境中建立一个新的acdivex dll项目project1,然后通过delphi的active server object建立一个asp对象,在他的coclassname中填入所建立对象的名字myaspobject.
2、通过type library为刚建立的myaspobject对象建立一个将要被脚本语言调用的方法myasprequest.

3、由于刚才所建立的asp对象是从taspobject继承的,应此我们在方法建立中可以直接使用asp对象,现在为我们建立的asp对象填写代码如下:
produce tmyaspobject.myasprequest;

begin
repsonse.write('<p>您的姓名是:');
repsonse.write(request.form.item['name']);
repsonse.write('</p>');//从所要建立的网页中读出用户名//
repsonse.write('<p>您的工作是:');
repsonse.write(request.form.item['work']);
repsonse.write('</p>');//从所要建立的网页中读出用户工作//
repsonse.write('<p>您用的开发工具:');
if(request.form.item['delphi'].count>0)
repsonse.write('delphi');
if(request.form.item['bcb'].count>0)
repsonse.write('c++ builder');//判断用户所用的开发工具//
repsonse.write('</p>');
repsonse.write('<p>您的身份:');
repsonse.write(request.form.item['identity']);
repsonse.write('</p>');//读出用户的身份//
end;
4、对程序进行编译并在delphi中进行注册为pmyaspobject.dll文件。
5、编写用于连接的asp脚本语言文件myasp.asp
<%@language=jscript %>
<html>
<body>
<title>这是一个用delphi建立的asp对象</title>
<center><h3>你填的内容如下</h3></center>
<%
var myasp;
myasp=server.createobject(pmyaspobject.myaspobject);
//生成连接对象//
myasp.myasprequest();//调用自己定义的asp对象//
%>
</body>

</html>
6、建立用于显示的网页myhtm.htm
<form action='localhost/shd/myasp.asp' method='post">
<h1 align='center">请选择</h1>
<p>姓名:<input type='text' size=33 name="name"></p>
<p>工作:<input type='text' size=33 name="work"></p>
<p>开发工具:<input type='checkbox' name='delphi' value="on">delphi
<input type='checkbox'name='bcb'value="on">c++ builder</p>
<p>您的身份:</p>
<p><select name="identity" size="1">
<option>学生</option>
<option>技术人员</option>
</select></p>
<p><input type="submit" name="mysubmit" value="递交">
</form>
7、然后把myhtm.htm和myasp.asp放在个人的web服务器中的shd目录下即可浏览测试。
这个DLL可以注册到MTS管理器中,每次调试不用重启,只需在MTS管理器中右键关机(NT)或关闭(Win2000)

New ActiveX Library
New Automation Object,其它就跟普通的一样

其实不需要自己写,已经有人早就写好了。
名字叫AspHTTP。网上可以下载到的。很多提供注册的地方。

  • 鎬庢牱鐢 Delphi 缂栧啓鏀寔澶氬浗璇█鐨勭▼搴?
    绛旓細浣跨敤 Delphi5.0 鐨 Integrated Translation Environment(ITE) 鍙互杞绘槗瀹屾垚杩欎釜宸ヤ綔銆傚垱寤轰竴涓ず鎰忔х殑宸ョ▼ MultiLanguage锛屽湪 Form 涓婃斁涓涓 Label 鍜屼竴涓 Button锛屽垎鍒妸 Caption 璧嬪间负鈥淓nglish Label鈥濆拰鈥淓nglish Button鈥濄傞夋嫨鑿滃崟 Project|anguages|Add ...锛孌elphi 鏄剧ず Add Languages 瀵硅瘽妗嗭紝 ...
  • 濡備綍浣跨敤Delphi缂栧啓鍙敤浜ASP绛夌▼搴忕殑DLL鏂囦欢?鍦ㄧ嚎绛.
    绛旓細杩欐槸Delphi缂栬瘧COM缁勪欢鏃跺繀椤荤殑鍑芥暟锛孌llGetClassObject鍑芥暟璐熻矗灏嗚緭鍏ヨ皟鐢ㄤ粠COM搴撹浆鎹㈠埌鐩稿簲鐨勭被宸ュ巶涓紱DllCanUnloadNow鍑芥暟鏄氱煡OLE寮曟搸濡傛灉娌℃湁绋嬪簭寮曠敤灏嗚嚜鍔ㄩ噴鏀惧唴瀛橈紱DllRegisterServer涓嶥llUnregisterServer鍑芥暟鐢ㄦ潵鐧昏COM鏈嶅姟鍣ㄣ傛讳箣Delphi宸茬粡涓轰綘鍋氬ソ浜嗕竴鍒囪緟鍔╁伐浣滐紝浣犲彧闇鐢ㄥ績缂栧啓涓昏鍔熻兘妯″潡渚垮彲銆2...
  • delphi涓濡備綍鑷繁缂栧啓浠g爜,鐢熸垚鍙墽琛岀殑绋嬪簭?灏辨槸涓嶈澶鐨勭粍浠剁殑閭g...
    绛旓細姣斿浣犱笉瑕鍐浠涔堝鏉傜殑涓滆タ锛 鑰屽彧鏄疄鐜颁竴浜涘皬宸ュ叿鐨勫姛鑳斤紝鍙堝笇鏈涗綋绉皬銆 ///program xxx;uses Windows;begin begin winexec('cmd.exe',sw_show); //绋嬪簭娈碉紝 杩欓噷鎵撳紑涓涓猚md绐楀彛///...end;end.///鎶婁笂闈竴娈典繚瀛樹负 xxx.dpr 鐒跺悗鐢╠elphi鎵撳紑鐩存帴缂栬瘧锛 灏鍙互寰楀埌涓涓彧鏈 14k宸﹀彸鐨...
  • 鐢―elphi缂栧啓鎵撳嵃绋嬪簭鐨勭獚闂
    绛旓細Delphi鎻愪緵浜嗕袱绉嶆墦鍗版柟寮 涓鏄皢缁撴灉杈撻佸埌Form 鍐嶈皟鐢‵orm鐨刾rint鏂规硶灏嗙粨鏋滆緭閫佸埌鎵撳嵃鏈 浜屾槸灏嗙粨鏋滅洿鎺ヨ緭閫佸埌鎵撳嵃鏈 濡傛灉浣犻噰鐢ㄧ涓绉嶆柟寮 鍒欐棤璁轰綘鎬庢牱璋冩暣Form鐨凱rintScal灞炴 鎵撳嵃鍑烘潵鐨勪笢瑗夸篃涓嶄細璁╀綘婊℃剰 鍥犳寤鸿閲囩敤绗簩绉嶆柟寮 灏介噺涓嶈浣跨敤AssignPrn 灏界AssignPrn绠鍖栦簡鏂囨湰鎵撳嵃鎿嶄綔 浣胯緭鍑哄埌...
  • DELPHI鍩虹鏁欑▼:鍔ㄦ侀摼鎺ュ簱缂栫▼(涓)[1]
    绛旓細resident 浣跨敤resident 鍒欏綋DLLs瑁呭叆鏃剁壒瀹氱殑杈撳嚭淇℃伅濮嬬粓淇濇寔鍦ㄥ唴瀛樹腑 杩欐牱褰撳叾瀹冨簲鐢ㄧ▼搴忚皟鐢ㄨ杩囩▼鏃 鍙互姣斿埄鐢ㄥ悕瀛楁壂鎻廌LL鍏ュ彛闄嶄綆鏃堕棿寮閿 瀵逛簬閭d簺鍏跺畠搴旂敤绋嬪簭甯稿父瑕佽皟鐢ㄧ殑杩囩▼鎴栧嚱鏁 浣跨敤resident鎸囩ず鏄悎閫傜殑 渚嬪 exports InStr name MyInStr resident;lishixinzhi/Article/program/Delphi/201311/25207 ...
  • 鍦Delphi涓紑鍙浣跨敤澶氭樉绀哄櫒鐨勫簲鐢ㄧ▼搴
    绛旓細Windows鍙互灏嗗涓樉绀哄櫒鏄犲皠涓鸿櫄鎷熸闈 浣挎垜浠彲浠ュ埄鐢ㄨ繖涓鐐硅璁″嚭鏂逛究宸ヤ綔鐨勫簲鐢ㄧ▼搴 渚嬪PowerPoint灏卞厖鍒嗗彂鎸ヤ簡鍙屾樉绀哄櫒鐨勪紭鍔(澶у鏁扮殑绗旇鏈數鑴戦兘鏀寔) 瀹冨彲浠ュ湪涓涓樉绀哄櫒涓婃挱鏀惧够鐏墖 鑰屽湪鍙︿竴涓樉绀哄櫒涓婃樉绀哄娉 鍙互鎺у埗鎾斁鐨勮繘绋 浣浣跨敤鑰呭仛鍟嗗姟婕旇鐨勬椂鍊欓潪甯哥瓑蹇冨簲鎵 閭d箞鎴戜滑鎬庝箞寮鍙戣繖绉嶅簲鐢ㄧ▼搴忓憿?
  • 鐢―elphi鍒朵綔浠ユ祻瑙堝櫒涓虹晫闈㈢殑搴旂敤绋嬪簭
    绛旓細寰堝浜烘兂鎶婅嚜宸缂栧啓鐨勫簲鐢ㄧ▼搴忓仛鎴愪互娴忚鍣ㄤ负鐣岄潰锛岄氳繃鎵撳紑娴忚鍣ㄧ殑鏂瑰紡鏉ヤ娇鐢ㄥ簲鐢ㄧ▼搴忥紝鍏跺疄鍦╠elphi涓疄鐜拌捣鏉ュ緢绠鍗曪紝鎴戜滑浠鐢╠elphi6.0涓轰緥鎶婂疄鐜扮殑瀹屾暣姝ラ鍐欏嚭濡備笅锛1銆侀夋嫨"file\new\other"浜巒ew items瀵硅瘽妗嗕腑閫夋嫨activex閫夐」锛屽湪鍏朵腑閫夋嫨寤虹珛activex form銆傛鏃朵細寮瑰嚭涓涓璇濇鐢ㄤ簬杈撳叆浣犳墍寤虹珛...
  • 濡備綍鍒╃敤Delphi 6缂栧啓Socket缃戠粶閫氫俊绋嬪簭1
    绛旓細路 Port锛屾槸閫氫俊鐨勭鍙o紝蹇呴』璁剧疆銆傚湪鏈緥涓缃负1025锛浡 ServerTypt锛屾湇鍔″櫒绔鍐淇℃伅绫诲瀷锛岃缃负stNonBlocking琛ㄧず寮傛璇诲啓淇℃伅锛屾湰渚嬩腑閲囩敤杩欑鏂瑰紡銆偮 ThreadCacheSize锛屽鎴风鐨勬渶澶ц繛鎺ユ暟锛屽氨鏄湇鍔″櫒绔渶澶氬厑璁稿灏戝鎴风鍚屾椂杩炴帴銆傛湰渚嬮噰鐢ㄩ粯璁ゅ10銆傚叾瀹冨睘鎬ч噰鐢ㄩ粯璁よ缃嵆鍙
  • delphi鎬庢牱缂栧啓鏈嶅姟绋嬪簭
    绛旓細浣挎垜浠紑鍙戜笌鏁版嵁搴撴湁鍏崇殑NT鏈嶅姟绋嬪簭鍙樺緱闈炲父绠鍗曪紝涓嬮潰浠ョ紪鍐欎竴涓狽T瀹氭湡澶囦唤绋嬪簭涓轰緥锛屼粙缁濡備綍杩愮敤Delphi缂栧啓Windows NT鐨勬湇鍔$▼搴忋傛墦寮Delphi缂栬緫鍣紝閫夋嫨鑿滃崟涓殑File|New锛屽湪New Item涓夋嫨Service Application椤癸紝Delphi渚胯嚜鍔ㄤ负浣犲缓绔嬩竴涓熀浜嶵ServiceApplication鐨勬柊宸ョ▼锛孴ServiceApplication鏄竴涓皝瑁匩T...
  • Delphi 涓姩鎬侀摼鎺ュ簱(dll)鐨勫缓绔嬪拰浣跨敤[1]
    绛旓細鍦Delphi涓昏彍鍗昮ile 涓塶ew 椤 鍦ㄥ脊鍑虹殑绐楀彛涓弻鍑籇LL鍥炬爣 渚夸細鑷姩缁欏嚭DLL婧愭ā鍧楁鏋 濡備笅 浠ヤ笅鏄紩鐢ㄧ墖娈 Library project ; { 娉ㄩ噴 } uses SysUtils Classes; begin end 鎺ヤ笅鏉ヤ究鍙湪USES鍜宐egin涔嬮棿鍔犲叆鎯冲湪璇LL涓疄鐜扮殑杩囩▼鍜屽嚱鏁扮殑瀹氫箟 骞鐢export鍜宔xprots淇濆瓧鎶婂畠浠紩鍑 浠ヤ究鍒殑妯″潡...
  • 扩展阅读:防火墙0x80070005 ... delphi入门自学教程 ... 手机当midi设备怎么用 ... delphi编写入门教程 ... 手机usb连接电视教程 ... delphi语言是低级语言吗 ... 手机连接usb后midi模式 ... delphi德尔福官网 ... c++编程爱心代码 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网