Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const LB_GETCOUNT = &H18B
Private Const LB_GETTEXT = &H189
Private Sub Command1_Click()
Dim item() As String, i As Long
GetListItem List1.hwnd, item()
For i = 0 To UBound(item)
Debug.Print item(i)
Next i
End Sub
Private Sub Form_Load()
List1.AddItem "apple"
List1.AddItem "orange"
List1.AddItem "grape"
List1.AddItem "banana"
End Sub
' 获得列表框中的内容
Sub GetListItem(ByVal hwnd As Long, ByRef item() As String)
Dim count As Long, idx As Long, i As Long
count = SendMessage(hwnd, LB_GETCOUNT, ByVal 0, ByVal 0)
For i = 0 To count - 1
ReDim Preserve item(i)
item(i) = String(255, Chr(0))
SendMessage hwnd, LB_GETTEXT, ByVal i, ByVal item(i)
item(i) = Left(item(i), InStr(item(i), Chr(0)) - 1)
Next i
End Sub
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Const WM_GETTEXT = &HD
Private Sub Command1_Click()
Dim Handle As Long
Dim wndText As String
wndText = Space(255)
Handle = FindWindow("IEFrame", "在WINDOWS中,如何读取其它应用程序窗口中的数据? - Microsoft Internet Explorer")
Handle = FindWindowEx(Handle, 0&, "WorkerW", vbNullString)
Handle = FindWindowEx(Handle, 0&, "ReBarWindow32", vbNullString)
Handle = FindWindowEx(Handle, 0&, "ComboBoxEx32", vbNullString)
Handle = FindWindowEx(Handle, 0&, "ComboBox", vbNullString) ' 获得窗口句柄
Handle = FindWindowEx(Handle, 0&, "Edit", vbNullString)
SendMessage Handle, WM_GETTEXT, 256, ByVal wndText
wndText = Left(wndText, InStr(wndText, Chr(0)))
Debug.Print wndText
End Sub
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function WindowFromPoint Lib "user32" Alias "WindowFromPoint" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
应该可以吧