丢函数地址给调用方,再用callwindowproc在需要的时候调用:'窗体中 Option ExplicitPrivate Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcW" ( _ ByVal lpPrevWndFunc As Long, _ ByVal hwnd As Long, _ ByVal msg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As LongDim lFunAddr As Long '函数地址Private Sub Command1_Click() '需要时调用: Call CallWindowProc(lFunAddr, 0, 0, 0, 0) End SubPrivate Sub Form_Load() lFunAddr = GetAddress(AddressOf A) '保存函数地址 End Sub'标准模块中 Option ExplicitFunction A() As Long MsgBox "A" End FunctionFunction GetAddress(ByVal Addr As Long) As Long GetAddress = Addr End Function
老大 如果函数带有参数的话, 要如何呼叫Function A(s as string) As Long MsgBox s End Function
Option ExplicitPrivate Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcW" ( _
ByVal lpPrevWndFunc As Long, _
ByVal hwnd As Long, _
ByVal msg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As LongDim lFunAddr As Long '函数地址Private Sub Command1_Click()
'需要时调用:
Call CallWindowProc(lFunAddr, 0, 0, 0, 0)
End SubPrivate Sub Form_Load()
lFunAddr = GetAddress(AddressOf A) '保存函数地址
End Sub'标准模块中
Option ExplicitFunction A() As Long
MsgBox "A"
End FunctionFunction GetAddress(ByVal Addr As Long) As Long
GetAddress = Addr
End Function
MsgBox s
End Function