delphi已经可以调用了:
type
Tshowgwqform=Procedure (AHandle:THandle);StdCall;
procedure TForm1.Button2Click(Sender: TObject);...var
gHandle:THandle;
showgwqform:Tshowgwqform;
begin
gHandle:=loadlibrary('Project1.dll');
@showgwqform:=GetProcAddress(gHandle,'showgwqform');
showgwqform(Application.Handle ); //showgwqform是dll中显示窗体的函数
freelibrary(gHandle);
end;在VB中,Tshowgwqform=Procedure (AHandle:THandle);StdCall;怎么改写?
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As LongPrivate Sub Command1_Click()
Dim gHandle
Dim showgwqform
gHandle = LoadLibrary("D:\Upload\Key\Project1.dll")
'下面就不知道怎么写了
showgwqform = GetProcAddress(gHandle, "showgwqform")FreeLibrary gHandle
End Sub
type
Tshowgwqform=Procedure (AHandle:THandle);StdCall;
procedure TForm1.Button2Click(Sender: TObject);...var
gHandle:THandle;
showgwqform:Tshowgwqform;
begin
gHandle:=loadlibrary('Project1.dll');
@showgwqform:=GetProcAddress(gHandle,'showgwqform');
showgwqform(Application.Handle ); //showgwqform是dll中显示窗体的函数
freelibrary(gHandle);
end;在VB中,Tshowgwqform=Procedure (AHandle:THandle);StdCall;怎么改写?
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As LongPrivate Sub Command1_Click()
Dim gHandle
Dim showgwqform
gHandle = LoadLibrary("D:\Upload\Key\Project1.dll")
'下面就不知道怎么写了
showgwqform = GetProcAddress(gHandle, "showgwqform")FreeLibrary gHandle
End Sub
解决方案 »
- 如何实现iocp服务器端定时发送心跳包
- delphi串口通讯高手指点
- 如何捕捉两个键按下的情况并做相应处理?
- 请各位帮忙解决一下这个问题
- *****Corba编程系列之一:D7中没有CorbaConnetion了,这样连接数据库可以吗*****
- 急求大家帮忙,delphi连接WMQ的问题
- 如何进行文件升级,高分相送
- 请帮忙看下我编的数据库备份语句有什么错误?
- 使用第三方控件有什么坏处?分发时需要什么文件吗?
- 本人做了一个打印报表程序,出现了一个问题,请朋友帮忙,在下不胜感激!
- Borland的程序员,还得Turbo Pascal、TC20、BC++吗,真正的程序员,怎能不读《Borland传奇》一书,太好了!
- 有没有办法可以去掉Delphi6的平台警告信息!
begin
Resutl:=TForm1.Create(Nil);
end;
procedure DestroyForm(Form:Pointer);stdcall
begin
TForm(Form).Destroy;
end;
procedure ShowForm(Form:Pointer);stdcall
begin
TForm(Form).Show;
end;
exports
CreateForm,ShowForm,DestroyForm;然后再VB中:
Public Decalre Function CreateForm Lib "project1.dll" () As Long
Public Decalre Sub DestroyForm Lib "project1.dll" (Form As Long)
Public Decalre Sub ShowForm Lib "project1.dll" (Form As Long)
然后你可以在你的程序里面:Dim Form As Long
Private Sub Form_Load()
Form=CreateForm()
ShowForm Form
End Sub
Private Sub Form_Unload()
Call DestroyForm(Form)
End Sub
还有,窗体是是showmodal,弹出来时按不到那个Private Sub Form_Unload()
delphi的窗体放在dll中是不是不能被VB调用?还是有其它办法?