我正在开发一个将由我的EXE加载的DLL文件...所以EXE将调用第一个DLL程序,当这个程序加载时我想保持它打开,即使EXE关闭.例如,我有一个带有计时器的DLL,显示一个'Hello World'消息.DLL代码:
uses
SysUtils,
Classes,
Dialogs,
ExtCtrls;
{$R *.res}
type
TMyTimer = Class(TTimer)
public
procedure OnMyTimer(Sender: TObject);
end;
procedure DllMessage; export;
var
MyTimer: TMyTimer;
begin
MyTimer := TMyTimer.Create(nil);
MyTimer.Interval := 10000;
MyTimer.OnTimer := MyTimer.OnMyTimer;
end;
procedure TMyTimer.OnMyTimer(Sender: TObject);
begin
ShowMessage('Hello World');
end;
exports DllMessage;
begin
end.
Run Code Online (Sandbox Code Playgroud)
EXE加载如下:
procedure DllMessage; external 'Message.dll'
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
DllMessage;
end;
Run Code Online (Sandbox Code Playgroud)
当我关闭EXE时,我希望DLL继续运行并每隔10秒显示一条消息......这可能吗?
DLL被加载到进程中,如果没有进程来托管它们就不能存在.所以你问的是不可能的.
如果要关闭进程,但继续执行代码,则需要启动一个新的独立进程来执行该代码.
| 归档时间: |
|
| 查看次数: |
291 次 |
| 最近记录: |