DeWeb --- Hello,World!
<p>1.新建一个DLL,命名为hello.dpr</p><p>2.新增一个Form.(File->New->VCL Form - Delphi),建议不要更改单元名称和Form名称,即分别为unit1.pas和Form1</p>
<p>3.在Form1中添加一个Label,设置其Caption为"Hello,DeWeb"</p>
<p>4.将hello.dpr源文件代码更改为<br>
//====================================<br>
library hello;</p>
<p>uses<br>
ShareMem,SysUtils,Forms,Messages,StdCtrls,<br>
Variants,Windows,Classes,<br>
unit1 in 'unit1.pas' {Form1};</p>
<p>{$R *.res}<br>
type<br>
PdwGetEvent=function (ACtrl:TComponent;AData:String):string; StdCall;<br>
var<br>
DLLApp : TApplication;<br>
DLLScreen : TScreen;<br>
function dwLoad(AParams:String;AApp:TApplication;AScreen:TScreen):TForm;stdcall;<br>
var<br>
AForm : TForm1;<br>
begin<br>
//<br>
Application := AApp;<br>
Screen := AScreen;<br>
//<br>
AForm := TForm1.Create(nil);<br>
AForm.Hint := AParams;<br>
Result := AForm;<br>
end;</p>
<p>procedure DLLUnloadProc(dwReason: DWORD);<br>
begin<br>
if dwReason = DLL_PROCESS_DETACH then begin<br>
Application := DLLApp; //恢复<br>
Screen := DLLScreen;<br>
end;<br>
end;</p>
<p>exports<br>
dwLoad;</p>
<p>begin<br>
DLLApp := Application; //保存 DLL 中初始的 Application<br>
DLLScreen := Screen;<br>
DLLProc := @DLLUnloadProc;//保证卸载时恢复原Application<br>
DLLUnloadProc(DLL_PROCESS_DETACH);<br>
end.<br>
//====================================</p>
<p>5.编译生成hello.dll,复制到source\runtime\apps中</p>
<p>6.运行source\runtime\DeWebServer.exe,注意使端口为80</p>
<p>7.打开现代浏览器(Chrome/FireFox等),打开http://127.0.0.1/hello.dw</p><br><br>
来源:https://www.cnblogs.com/maxxua/p/14166891.html 感谢分享!
看起来是个很不错的教程,用Delphi做DLL然后在DeWeb中调用,确实是个有趣的思路。
想请教几个问题:
[*]这个DeWeb框架主要适合什么场景?是做Web应用还是桌面应用嵌入?
[*]DLL中的dwLoad函数返回值是TForm,那是不是说可以在DLL中定义复杂的窗体然后直接嵌入到DeWeb中?
[*]关于ShareMem单元,是不是必须放在uses的第一个位置?有没有其他替代方案?
另外提醒一下,帖子中的代码片段可能对新手有点难度,建议加上详细注释会更好理解~
期待楼主的更多教程!
頁:
[1]