findwindowex遍历子窗口(急!如何用findwindow函数找到所有打开的窗口,然后用sendmessag)

本文目录
- 急!如何用findwindow函数找到所有打开的窗口,然后用sendmessag
- 如何用findwindowex遍历某个窗口里的所有子窗口
- 易语言顶级句柄,一级句柄,二级句柄它们的类名都一样怎么绑定窗口
- C++求查找子窗口的方法
- 关于C#中FindWindow和FindWindowEx查找子窗体的用法,求助
- 怎样遍历所有系统内所有正在使用的窗口,获得句柄
急!如何用findwindow函数找到所有打开的窗口,然后用sendmessag
嗯,首先,前面的程序先用SendMessage关闭了自己,所以不能关闭其它窗体。其次,要用enumwindowsproc函数来列举,而GetWindow(hwnd,GW_HWNDNEXT)列举的不对,见笑了~~
如何用findwindowex遍历某个窗口里的所有子窗口
for (HWND hChildWnd = ::GetTopWindow(m_hWnd); hChildWnd != NULL; hChildWnd = ::GetNextWindow(hChildWnd, GW_HWNDNEXT)) { CWnd* pWnd = CWnd::FromHandle(hChildWnd); if (pWnd != NULL) { //... } }
易语言顶级句柄,一级句柄,二级句柄它们的类名都一样怎么绑定窗口
易语言中,顶级窗口、一级窗口、二级窗口句柄的类名相同时,可以通过以下步骤来绑定窗口:
1. 获取窗口句柄:使用窗口句柄获取函数,如 FindWindow、FindWindowEx 等,获取需要绑定的窗口的顶级句柄或一级句柄。
2. 获取子窗口句柄:使用窗口遍历函数,如 EnumWindows、EnumChildWindows 等,获取该窗口下需要绑定的子窗口二级句柄。
3. 绑定窗口:使用 EasyX 操作窗口函数,如 BindWindow、BindWindowEx 等,将顶级句柄或一级句柄与二级句柄绑定,实现窗口的操作。
需要注意的是,绑定窗口时,需要保证绑定的窗口具有确切的窗口标题或者窗口类名,使用 FindWindow、FindWindowEx 或者 EasyX 的窗口遍历函数时,需要传递正确的窗口标题或者窗口类名。
绑定窗口完成后,使用 EasyX 的窗口操作函数来进行窗口的各种操作,比如获取窗口信息、设置窗口属性、发送消息等等。需要根据实际需求选择对应的窗口操作函数。
C++求查找子窗口的方法
1、建议你先手工打开该记事本,然后用spy++查看该窗口的属性
2、确认ClassName,或者WindowName属性值
3、使用FindWindow函数,或者CWnd::FindWindowEx,或者EnumWindows
关于C#中FindWindow和FindWindowEx查找子窗体的用法,求助
FindWindow一般用了查找主窗口, 查找到主窗口后,用FindWindowEx查找里面的子窗口
怎样遍历所有系统内所有正在使用的窗口,获得句柄
以下模块:
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 GetParent Lib "user32" (ByVal hwnd As Long) 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 GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
’自定义数据类型
Public Type mType
fhwnd As Long ’窗口句柄
fText As String * 255 ’窗口标题
fRect As RECT ’窗口矩形
pHwnd As Long ’父窗句柄
pText As String * 255 ’父窗标题
End Type
’获取控件信息,写成SUB了,其实用FUNCTION返回值也可以,只是函数里面定义就多了,总的来看需要2个mType数组,这样做只需要一个,占用空间小了
Public Sub mGetAllWindow(m_Type() As mType)
Dim Wndback As Long ’上一个被查找的目标句柄
Dim i As Long ’数组控制
Do
ReDim Preserve m_Type(i)
DoEvents
’获取hwnd,第一个参数指定为0,查找桌面子窗口,第2个参数是开始查找的窗口,第34个参数使函数查找所有窗口
m_Type(i).fhwnd = FindWindowEx(0, Wndback, vbNullString, vbNullString)
If m_Type(i).fhwnd = 0 Then ’=0时已经查找一遍了,退出
Exit Sub
Else ’否则获取控件相关消息
’获取标题
GetWindowText m_Type(i).fhwnd, m_Type(i).fText, 255
’获取RECT
GetWindowRect m_Type(i).fhwnd, m_Type(i).fRect
’获取父HWND
m_Type(i).pHwnd = GetParent(m_Type(i).fhwnd)
’获取父标题
GetWindowText m_Type(i).pHwnd, m_Type(i).pText, 255
End If
Wndback = m_Type(i).fhwnd ’保存上一个查的句柄
i = i + 1
Loop
End Sub
以下在窗体:(添加一个LISTVIEW1,一个COMMAND1)
Private Sub Command1_Click()
Dim cType() As mType
mGetAllWindow cType()
Dim i As Long
ListView1.ListItems.Clear
For i = LBound(cType) To UBound(cType)
ListView1.ListItems.Add , "a" & i, cType(i).fhwnd
ListView1.ListItems("a" & i).SubItems(1) = cType(i).fText
ListView1.ListItems("a" & i).SubItems(2) = cType(i).fRect.Left
ListView1.ListItems("a" & i).SubItems(3) = cType(i).fRect.Bottom
ListView1.ListItems("a" & i).SubItems(4) = cType(i).fRect.Top
ListView1.ListItems("a" & i).SubItems(5) = cType(i).fRect.Right
ListView1.ListItems("a" & i).SubItems(6) = cType(i).pHwnd
ListView1.ListItems("a" & i).SubItems(7) = cType(i).pText
Next
End Sub
Private Sub Form_Load()
ListView1.ColumnHeaders.Add , , "句柄", 1200
ListView1.ColumnHeaders.Add , , "标题", 2800
ListView1.ColumnHeaders.Add , , "Rect.Left", 800
ListView1.ColumnHeaders.Add , , "Rect.Bottom", 800
ListView1.ColumnHeaders.Add , , "Rect.Top", 800
ListView1.ColumnHeaders.Add , , "Rect.Right", 800
ListView1.ColumnHeaders.Add , , "父窗句柄", 1200
ListView1.ColumnHeaders.Add , , "父窗标题", 2800
ListView1.View = lvwReport
ListView1.FullRowSelect = True
Command1.Caption = "刷新"
End Sub

更多文章:
数据库管理系统和数据库系统分别侧重(数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例)
2026年9月7日 17:00
springmvc的依赖(springMVC的注入方式有哪几种,这与springMVC依赖)
2026年9月7日 14:00
display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)
2026年9月7日 11:00
timestamp without time zone(Postgresql中to_date()函数使用问题)
2026年9月7日 09:40






