可是这样不能调用啊?
a("a string", 1); // wrong.
a("a string", 1); // wrong.
解决方案 »
- 我的机器上装的是office2003,程序打包后,如果客户机是office2000,我的程序中导excel功能可以正常用吗?
- 为什么form绘制曲线,残留在的form控件上的去不掉?
- Microsoft SQL数据库当前进程数量大是否对数据库性能有影响
- 有关自定义纸型的代码根据名称取得.
- 怎样获得当前所选择的路径
- 这段程序有问题请给看看
- 请问各位高程学VB应前看什么书?
- 各位大虾,帮忙解决一下,IE控件不知如何实现这样的功能,100分相送。
- 把txt文件里的内容按行与分类存入数据库
- 求助:从文本框输入数据库名称,并导入显示,提示找不到文件。
- 怎样刷新DataEnviroment的数据内容?
- 请教高手!怎么在vb中打开一个应用程序,并运行它?
a = GetProcAddress(数字,字符)
sub procname()
...
end sub
....
result=getprocaddress(hmodule,procname)
private sub fff(byval s1 as string,byval n1 as integer) as Boolean
...
end sub (是不是sub???是fuction??算拉,反正八九不离十:)
typedef int (*FPFUNC)(char *s, int n);
HINSTANCE hDLL = LoadLibrary("c:\my.dll");
FPFUNC func = (FPFUNC)GetProcAddress(hDLL, "funcname");
func("abcdefg", 123);
这一段如何改成 VB 代码?或者 VB 里面有更方便的方法?还有,funcname 这个函数的调用协议不一定是 stdcall,也可能是 cdecl,要怎么改呢?
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
'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
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
'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
typedef int (*FPFUNC)(char *s, int n);
HINSTANCE hDLL = LoadLibrary("c:\my.dll");
FPFUNC func = (FPFUNC)GetProcAddress(hDLL, "funcname");
func("abcdefg", 123);
Declare Function funcname Lib "c:\my.dll" (ByVal s1 as string,ByVal n1 as integer) As Booleam
'使用
dim a as booleam
a=funcname("abcdef",123)
'看是不是这个意思啦
'声明函数FUNCNAME在"C:\MY.DLL"中,该函数有两个参数,第一个为字符串,第二个为短整型数值
'调用该函数返回一个逻辑值 1 或 0 即vb中的True 和 False.
'首先在vb中声明函数的位置和参数及返回值.并将它的调用结果返回给a.如果在窗体中,声明前加
'Private 限制作用域.
如果不对,请再将题意讲清楚些.
typedef int (PASCAL *funcname)(LPSTR s1, LPSTR s2, int n1, DWORD dw1, int n2, LPCSTR s3, int n4);