获取无标题子窗口句柄
知道父窗口的类名和窗口标题,我可以得到父窗口的句柄,但是打开的一个子窗口,用SPY测得无标题,类名和父窗口的句柄一样的,我要怎么获取这个子窗口的句柄呢,不要说方法了,我网上查了大多都是那样说,但是我不会写,具体写点代码出来更好了 --------------------编程问答-------------------- 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--------------------编程问答-------------------- 子窗口是无标题 --------------------编程问答-------------------- 无标题也可以查找啊
--------------------编程问答-------------------- wnd = FindWindowEx(父窗体的句柄, 0, 子窗体的类名, vbNullString)
--------------------编程问答-------------------- 子窗体的类名用SPY 测到和父窗口一样,而且里面大多数打开的子窗口的类名都是和父窗口的一样 --------------------编程问答-------------------- 这个我就爱莫能助了,我以前就是这么得到QQ密码的
不知道你要对付的程序,所以无从下手
--------------------编程问答-------------------- 我要做的就是QQ游戏里面,四国军棋里面的窗口 --------------------编程问答--------------------
我以前丢的QQ是不是你搞去的呢? --------------------编程问答--------------------
棋友...
军旗界面是类似新版本qq那样的界面, 纯自绘, 不是directui, 只是应用了 dui的一些概念
他没有子控件的概念, 上面所有的控件都是对象, 那个显示信息的窗口除外
要想操作那个窗口, 得用破解的方式,分析程序了
--------------------编程问答-------------------- 我知道主窗口是自绘,但是比如点击上面那设置按钮弹出来的设置子窗口就不是自绘,我要获取的就这样的子窗口 --------------------编程问答-------------------- 棋友 --------------------编程问答--------------------
如果仅仅是操作那个设置窗口里面的内容, 简单多了
先获取主窗口句柄, 然后 getwindowthreadid ,获取进程id或者线程id,哪个都行
然后再根据设置窗口的类名,获取到句柄,这可以由枚举完成, 得到句柄后同样通过getwindowthreadid获取相应的id, 然后对比,如果相同,说明是同一个进程的两个窗口, 然后在枚举设置窗口的下级控件,找到要操作的控件,发相应的消息就能操作了 --------------------编程问答--------------------
搭个车请教一下PctGL,如果照你说的,军棋用什么方法取得内置值比较理想。 --------------------编程问答--------------------
破方法... 除此之外... 别无他法... --------------------编程问答-------------------- 可以获得的,用SPY++获得窗口ID,然后用GetDlgItem这个API获取句柄
GetDlgItem(父窗口句柄, 窗口ID) --------------------编程问答-------------------- 棋友...
!!! --------------------编程问答--------------------
'==============================================================================
' Constant defining ( 常数定义 )
'==============================================================================
Private Const GW_CHILD = 5
Private Const GW_HWNDNEXT = 2
'==============================================================================
' API function declare ( API函数声明 )
'==============================================================================
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetWindow Lib "user32" ( _
ByVal hwnd As Long, _
ByVal wCmd As Long) As Long
'==============================================================================
' 基本事件处理过程
'==============================================================================
'----------------- “开始”按钮点击事件 -----------------
Private Sub Command1_Click()
Dim ParentWnd As Long '父窗口句柄
Dim ClientWnd As Long '子窗口句柄
List1.Clear '清楚列表框内容
'以下是取得你指定窗口句柄过程,注意修改类名和窗口名
ParentWnd = FindWindow("你说的类名", "你说的窗口名")
If ParentWnd = 0 Then
MsgBox "没有找到父窗口。", 16, "错误"
Exit Sub
End If
'取得第一个子窗口的句柄
ClientWnd = GetWindow(ParentWnd, GW_CHILD)
If ClientWnd = 0 Then
MsgBox "在指定窗口中没有发现子窗口的存在。", 16, "错误"
Exit Sub
End If
'开始循环查找所有相同层次的子窗口
Do
DoEvents
List1.AddItem "子窗口:" & ClientWnd
ClientWnd = GetWindow(ClientWnd, GW_HWNDNEXT)
Loop While ClientWnd <> 0
MsgBox "完成处理。", 64, "提示"
End Sub
补充:VB , API