已知:
EXE文件位置: d:\ATT\Attend.exe
Dll文件位置: d:\ATT\Dll\JBC_attend.dll我用以下语句为何声明失败呢?Public Declare Function SetDoorTimeTable Lib "\DLL\JBC_attend.dll"
EXE文件位置: d:\ATT\Attend.exe
Dll文件位置: d:\ATT\Dll\JBC_attend.dll我用以下语句为何声明失败呢?Public Declare Function SetDoorTimeTable Lib "\DLL\JBC_attend.dll"
=========================================================================
注意:在发布 EXE 文件时用户不一定是安装在 d:盘。可能是 C:\ATT\ 或 E:\ATT\。用绝对路径肯定是不行的。
如果这个函数参数不多的话,最好使用loadlibrary。'Example Name:Call Procedure
Create a new project and add this code to Form1
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long
Private Sub Form_Load()
On Error Resume Next
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: [email protected]
'We're going to call an API-function, without declaring it!
Dim lb As Long, pa As Long
'map 'user32' into the address space of the calling process.
lb = LoadLibrary("user32")
'retrieve the address of 'SetWindowTextA'
pa = GetProcAddress(lb, "SetWindowTextA")
'Call the SetWindowTextA-function
CallWindowProc pa, Me.hWnd, "Hello !", ByVal 0&, ByVal 0&
'unmap the library's address
FreeLibrary lb
End Sub
2、就算可以运行,若参数多一点。还是行不通。不知是否有更好的方式?