Delphi如何编写dll用以加载指定文件?

我想用delphi写个dll文件,该文件一旦被宿主程序加载(如DLL_loader)后,自动出现个窗体和按钮,点按钮后弹出通用对话框来选择指定文件,最后能够加载指定问价到自身。
这样的dll我在网上见到过,很简单的。可是因为对delphi不熟悉,再加上现在拼凑的小程序点了按钮不弹出选择对话框,只有点关闭才弹出。。。下面附上个人写的一点源代码,望高手指教,好的话加分!!!

.dpr文件部分代码:
procedure DllEnterPoint(Reason: Integer);
begin

if (Reason = DLL_PROCESS_ATTACH)
then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end

end;

begin
DLLProc := @DLLEnterPoint;
DllEnterPoint(DLL_PROCESS_ATTACH);
end.
========================================
.pas部分核心代码:
procedure TForm1.Button1Click(Sender: TObject);
var
threadID:THandle;
begin
CreateThread(nil, 0, @fun1, nil, 0, threadID);
end;
function fun1:Integer;stdcall;
var
openDialog:TOpenDialog;
begin
openDialog := TOpenDialog.Create(nil);
if openDialog.Execute then
end;
end.
我已经写好大部分代码,上面只是截取部分核心代码。
DLL加载时能够弹出小窗,但是点了按钮后程序假死,就是这个情况。
我使用创建线程做的,如果不创建也是假死,我想跟OpenDialog哪个地方出问题了!
请高手帮忙解决这个问题~~

工程不一样,通过开始菜单建立一个dll工程,将其主工程的抬头不是project
而是
library
此dll的工程,其最下方有:
Experts

在下边写上你的函数,如
Experts
dllAbc;

之后,在某个页面实现这个方法就可以了,不过一定要写上调用顺序如stdl标志

procedure TForm1.Button1Click(Sender: TObject);
var
threadID:THandle;
threadID:THandle;
begin
CreateThread(nil, 0, @fun1, nil, 0, threadID);
end;
以上这句话确实被调用了么?可以考虑
procedure TForm1.Button1Click(Sender: TObject);
var
openDialog:TOpenDialog;

begin
ShowMessage('');
openDialog := TOpenDialog.Create(nil);
if openDialog.Execute then
end;
看看
end;
温馨提示:答案为网友推荐,仅供参考
相似回答