先用SPY++得到窗口类,这样可以减小你搜索的范围,甚至某些情况下,该窗口类名比较特殊,只有你运行的那个指定程序才具有。 写一个函数:(循环检测) 1、搜索遍所有窗口类为该值的窗口(建议用FINDWINDOWEX函数), 2、每发现一个时,利用所得的HWND使用GETWINDOWTEXT函数获取该窗口标题, 3、用INSTR函数检测该标题中是否含有-AABBCCDD字样,如果含有那么这个句柄就是你想要的 给你一段示例: '获取含指定字符窗口句柄 Public Function mGetWindow(ByVal cName As String, ByRef fText As String) As Long Dim myStr As String * 255 Dim strLen As String Dim bWnd As Long Dim bWndback As Long strLen = Len(myStr) bWndback = 0 Do DoEvents '获取子窗口标志 bWnd = FindWindowEx(0, bWndback, cName, vbNullString) 'List1.AddItem bWnd If bWnd <> 0 Then '获取子窗口标题 GetWindowText bWnd, myStr, strLen myStr = Trim(myStr) If InStrRev(myStr, fText) Then mGetWindow = bWnd Exit Do End If Else Exit Do mGetWindow = 0 End If bWndback = bWnd Loop End Function 参数cname是窗口类名,当然,如果你不指定也可以,传入vbnullstring,ftext是窗口标题的部分内容(-AABBCCDD);以上函数只返回一个窗口就退出了。
因为要实时监控的
写一个函数:(循环检测)
1、搜索遍所有窗口类为该值的窗口(建议用FINDWINDOWEX函数),
2、每发现一个时,利用所得的HWND使用GETWINDOWTEXT函数获取该窗口标题,
3、用INSTR函数检测该标题中是否含有-AABBCCDD字样,如果含有那么这个句柄就是你想要的
给你一段示例:
'获取含指定字符窗口句柄
Public Function mGetWindow(ByVal cName As String, ByRef fText As String) As Long
Dim myStr As String * 255
Dim strLen As String
Dim bWnd As Long
Dim bWndback As Long
strLen = Len(myStr)
bWndback = 0
Do
DoEvents
'获取子窗口标志
bWnd = FindWindowEx(0, bWndback, cName, vbNullString)
'List1.AddItem bWnd
If bWnd <> 0 Then
'获取子窗口标题
GetWindowText bWnd, myStr, strLen
myStr = Trim(myStr)
If InStrRev(myStr, fText) Then
mGetWindow = bWnd
Exit Do
End If
Else
Exit Do
mGetWindow = 0
End If
bWndback = bWnd
Loop
End Function
参数cname是窗口类名,当然,如果你不指定也可以,传入vbnullstring,ftext是窗口标题的部分内容(-AABBCCDD);以上函数只返回一个窗口就退出了。