Winapi 调用API时所需的子项、函数或属性
我想使用EnumWindows API函数存储所有活动窗口标题。但是我想使用调用EnumWindows的函数作为回调函数。我想通过更改lParam变量来实现这一点,以便函数知道何时必须调用EnumWindows以及何时是回调函数。问题是它给了我一个错误:“期望的子项、函数或属性。”。这是我的密码:Winapi 调用API时所需的子项、函数或属性,winapi,vb6,Winapi,Vb6,我想使用EnumWindows API函数存储所有活动窗口标题。但是我想使用调用EnumWindows的函数作为回调函数。我想通过更改lParam变量来实现这一点,以便函数知道何时必须调用EnumWindows以及何时是回调函数。问题是它给了我一个错误:“期望的子项、函数或属性。”。这是我的密码: Private Sub Command1_Click() ReceiveHwnd 0, 1 End Sub 这部分代码位于模块中: Public Declare Function GetW
Private Sub Command1_Click()
ReceiveHwnd 0, 1
End Sub
这部分代码位于模块中:
Public Declare Function GetWindowTextLength Lib "user32.dll" Alias "GetWindowTextLengthA" (ByVal Hwnd As Long) As Long
Public Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal Hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function EnumWindows Lib "user32.dll" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public HwndCount As Double, HwndArray() As Long
Public Function GetTitle(Hwnd As Long) As String
Dim Lenght As Long
Dim TempValue As String
Lenght = GetWindowTextLength(Hwnd) + 1
TempValue = Space$(Lenght)
GetWindowText Hwnd, TempValue, Lenght
GetTitle = Mid(TempValue, 1, Lenght - 1)
End Function
Public Function ReceiveHwnd(ByVal Hwnd As Long, ByVal lParam As Long) As Long
Static Count As Double
If lParam = 1 Then
EnumWindows AddressOf ReceiveHwnd, 0
Count = 0
Else
Count = Count + 1
ReDim Preserve HwndArray(1 To Count)
HwndArray(Count) = Hwnd
ReceiveHwnd = 1
End If
End Function
错误出现在这一行ReceiveHwnd的EnumWindows地址,0
来自ReceiveHwnd
函数。
您能告诉我问题出在哪里吗?我可能错了,但我认为您需要在公共类模块中使用回调函数。我认为问题可能是你在常规模块中有它。我建议你对这个.Hmmm做一点研究,从它的回调函数调用
EnumWindows
。。在我看来,这个设计很糟糕。