Private Sub FindWnd()
Dim TemphWnd As Long
Dim TempLI As ListItem
LV1.ListItems.Clear
TemphWnd = hWndDir
Set TempLI = LV1.ListItems.Add(, , ".")
TempLI.SubItems(1) = TemphWnd
TempLI.SubItems(2) = GetClassNameStr(TemphWnd)
TempLI.SubItems(3) = GetDlgCtrlID(TemphWnd)
LV1_ItemClick TempLI
TemphWnd = GetParent(hWndDir)
If TemphWnd = 0 Then TemphWnd = GetWindow(hWndDir, GW_OWNER)
If TemphWnd Then
Set TempLI = LV1.ListItems.Add(, , "..")
TempLI.SubItems(1) = TemphWnd
TempLI.SubItems(2) = GetClassNameStr(TemphWnd)
TempLI.SubItems(3) = GetDlgCtrlID(TemphWnd)
End If
CmdUp.Enabled = TemphWnd
TemphWnd = GetWindow(hWndDir, GW_CHILD)
TemphWnd = GetWindow(TemphWnd, GW_HWNDFIRST)
Do While TemphWnd
Set TempLI = LV1.ListItems.Add(, , GetCaption(TemphWnd))
TempLI.SubItems(1) = TemphWnd
TempLI.SubItems(2) = GetClassNameStr(TemphWnd)
TempLI.SubItems(3) = GetDlgCtrlID(TemphWnd)
TemphWnd = GetWindow(TemphWnd, GW_HWNDNEXT)
Loop
End Sub
Private Sub CmdMe_Click()
hWndDir = GetDesktopWindow
FindWnd
End Sub
Private Sub CmdOpen_Click()
LV1_DblClick
End Sub
Private Sub CmdSX_Click()
FindWnd
End Sub
Private Sub CmdUp_Click()
Dim TemphWnd As Long
TemphWnd = GetParent(hWndDir)
If TemphWnd = 0 Then TemphWnd = GetWindow(hWndDir, GW_OWNER)
If TemphWnd Then
hWndDir = TemphWnd
FindWnd
End If
Private Sub LV1_DblClick()
Dim TempLI As ListItem
Dim TemphWnd As Long
If LVB = 1 Then
'Debug.Print "1"
Set TempLI = LV1.SelectedItem
If (TempLI Is Nothing) = False Then
'Debug.Print "2"
If TempLI.Text <> "." Then
'Debug.Print "3"
TemphWnd = CLng(TempLI.SubItems(1))
If GetWindow(TemphWnd, GW_CHILD) Then
'Debug.Print "4"
hWndDir = TemphWnd
FindWnd
End If
End If
End If
End If
End Sub
Private Sub LV1_ItemClick(ByVal Item As MSComctlLib.ListItem)
Dim TemphWnd As Long
Dim rct As RECT
FrmMain.frm
====================================================================
VERSION 5.00
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Begin VB.Form FrmMain
Caption = "查找窗口"
ClientHeight = 3195
ClientLeft = 60
ClientTop = 345
ClientWidth = 4680
LinkTopic = "Form1"
LockControls = -1 'True
ScaleHeight = 3195
ScaleWidth = 4680
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton CmdOpen
Caption = "打开"
Height = 300
Left = 2550
TabIndex = 21
Top = 0
Width = 840
End
Begin VB.Frame FraInfo
Caption = "信息"
Height = 1455
Left = 0
TabIndex = 4
Top = 1710
Width = 4635
Begin VB.TextBox TxtH
Height = 270
Left = 3825
TabIndex = 19
Text = "Text1"
Top = 1110
Width = 750
End
Begin VB.TextBox TxtW
Height = 270
Left = 2640
TabIndex = 17
Text = "Text1"
Top = 1110
Width = 750
End
Begin VB.TextBox TxtY
Height = 270
Left = 1350
TabIndex = 15
Text = "Text1"
Top = 1110
Width = 750
End
Begin VB.TextBox TxtID
Height = 270
Left = 2820
TabIndex = 13
Text = "Text1"
Top = 510
Width = 1750
End
Begin VB.TextBox TxtX
Height = 270
Left = 300
TabIndex = 11
Text = "Text1"
Top = 1110
Width = 750
End
Begin VB.TextBox TxtClass
Height = 270
Left = 540
TabIndex = 9
Text = "Text1"
Top = 810
Width = 4035
End
Begin VB.TextBox TxthWnd
Height = 270
Left = 540
TabIndex = 7
Text = "Text1"
Top = 510
Width = 1750
End
Begin VB.TextBox TxtCap
Height = 270
Left = 540
TabIndex = 5
Text = "Text1"
Top = 210
Width = 4035
End
Begin VB.Label LblH
AutoSize = -1 'True
Caption = "高:"
Height = 180
Left = 3480
TabIndex = 20
Top = 1170
Width = 360
End
Begin VB.Label LblW
AutoSize = -1 'True
Caption = "宽:"
Height = 180
Left = 2310
TabIndex = 18
Top = 1170
Width = 360
End
Begin VB.Label LblY
AutoSize = -1 'True
Caption = "Y:"
Height = 180
Left = 1110
TabIndex = 16
Top = 1170
Width = 270
End
Begin VB.Label LblID
AutoSize = -1 'True
Caption = " ID:"
Height = 180
Left = 2340
TabIndex = 14
Top = 570
Width = 540
End
Begin VB.Label LblX
AutoSize = -1 'True
Caption = "X:"
Height = 180
Left = 60
TabIndex = 12
Top = 1170
Width = 270
End
Begin VB.Label LblClass
AutoSize = -1 'True
Caption = "类名:"
Height = 180
Left = 60
TabIndex = 10
Top = 870
Width = 540
End
Begin VB.Label LblhWnd
AutoSize = -1 'True
Caption = "hWnd:"
Height = 180
Left = 60
TabIndex = 8
Top = 570
Width = 540
End
Begin VB.Label LblCap
AutoSize = -1 'True
Caption = "标题:"
Height = 180
Left = 60
TabIndex = 6
Top = 270
Width = 540
End
End
Begin VB.CommandButton CmdUp
Caption = "向上"
Height = 300
Left = 1710
TabIndex = 3
Top = 0
Width = 840
End
Begin VB.CommandButton CmdMe
Caption = "恢复"
Height = 300
Left = 840
TabIndex = 2
Top = 0
Width = 840
End
Begin VB.CommandButton CmdSX
Caption = "刷新"
Height = 300
Left = 0
TabIndex = 1
Top = 0
Width = 840
End
Begin MSComctlLib.ListView LV1
Height = 1395
Left = 0
TabIndex = 0
Top = 300
Width = 2745
_ExtentX = 4842
_ExtentY = 2461
LabelEdit = 1
LabelWrap = -1 'True
HideSelection = 0 'False
FullRowSelect = -1 'True
GridLines = -1 'True
_Version = 393217
ForeColor = -2147483640
BackColor = -2147483643
BorderStyle = 1
Appearance = 1
NumItems = 0
End
End
Attribute VB_Name = "FrmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
Private Const GW_HWNDFIRST = 0 '为一个源子窗口寻找第一个兄弟(同级)窗口,或寻找第一个顶级窗口
Private Const GW_HWNDLAST = 1 '为一个源子窗口寻找最后一个兄弟(同级)窗口,或寻找最后一个顶级窗口
Private Const GW_HWNDNEXT = 2 '为源窗口寻找下一个兄弟窗口
Private Const GW_HWNDPREV = 3 '为源窗口寻找前一个兄弟窗口
Private Const GW_OWNER = 4 '寻找窗口的所有者
Private Const GW_CHILD = 5 '寻找源窗口的第一个子窗口
Private Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetDlgCtrlID Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long