函数指针基础用法
函数指针定义的参数必须和实体函数参数一样,如果有错,调用函数就软件崩溃
声明指针 ----------------
Dim 过程指针 As Sub(aa As Long, bb As Long)
Dim 函数指针 As Function(aa As Long, bb As Long) As Long
函数实体----------------
Sub 过程实体(aa As Long, bb As Long)
End Sub
Function 函数实体(aa As Long, bb As Long) As Long
End Function
指针绑定实体 --------------
过程指针=@过程实体
函数指针=@函数实体
调用函数,和普通函数使用一样 -----------------
过程指针(11,22)
返回=函数指针(11,22)
动态加载DLL,使用DLL中函数
函数指针定义的参数必须和DLL中一样,如果有错,调用函数就软件崩溃
Dim DLL模块句柄 As Any Ptr = DyLibLoad("DLL文件.dll")
If DLL模块句柄 Then
Dim DLL函数指针 As Function(aa As Long, bb As Long) As Long
DLL函数指针 = DyLibSymbol(DLL模块句柄, "函数名")
If DLL函数指针 Then
Dim 返回 As Long = DLL函数指针(11, 22)
End If
End If
执行内存中的汇编
为了安全考虑,WIn服务器版系统,不允许执行变量区内存执行代码,因此下面代码一调用就崩溃,需要你自己用API申请内存为执行代码属性的内存,才可以,汇编都会写,这申请内存的事情应该也会办,不会的就网上搜索吧。
Dim 函数指针 As Function(aa As Long, bb As Long) As Long
函数指针 = CAllocate(500)
''''在内存中写入汇编代码 ‘’‘’‘’‘’
Dim 返回 As Long = DLL函数指针(11, 22)
当然,你只要知道内存中函数地址在那里,都可以随意去
评论一下?