VisualFreeBasic代码_函数指针

2026-1-21 / 0 评论 / 51 阅读

函数指针基础用法

函数指针定义的参数必须和实体函数参数一样,如果有错,调用函数就软件崩溃

声明指针 ----------------
   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)

当然,你只要知道内存中函数地址在那里,都可以随意去

评论一下?

OωO
取消