首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >findwindowEX棘手的外部程序

findwindowEX棘手的外部程序
EN

Stack Overflow用户
提问于 2013-10-22 09:17:55
回答 1查看 3.6K关注 0票数 1

嘿,我只是想弄清楚怎么才能把它一直写着:

Window 00211286 "“QWidget

用绿色突出显示的是我试图用下面的代码查找的内容:

目前,我有以下内容:

代码语言:javascript
复制
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWndParent As IntPtr, ByVal hWndChildAfter As Integer, ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As IntPtr
Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As IntPtr
Public Declare Function SendMessageLong& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long)

Public Const WM_CHAR = &H102
Private Const BM_CLICK = &HF5
Public Const WM_LBUTTONDBLCLK = &H203
Public Const ENTER_KEY = 13

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim hwndParent As Long = FindWindow(vbNullString, "Genymotion")
    Dim hwndButton As Long = FindWindowEx(hwndParent, IntPtr.Zero, "QWidget", "")
    hwndButton = FindWindowEx(hwndButton, IntPtr.Zero, "QWidget", "content")
    hwndButton = FindWindowEx(hwndButton, IntPtr.Zero, "QWidget", "mainFrame")
    hwndButton = FindWindowEx(hwndButton, IntPtr.Zero, "QWidget", "")
    hwndButton = FindWindowEx(hwndButton, IntPtr.Zero, "QWidget", "qt_scrollarea_viewport")
    hwndButton = FindWindowEx(hwndButton, IntPtr.Zero, "QWidget", "")
End Sub

我得到了FindWindow的值,然后也得到了第一个findwindowEx的值……但在那之后,我得到了一个很大的0。然后,对于最后一个findwindowEx,我将获得与在第一个FindWindowEx上相同的数字。

任何帮助都是最好的!

EN

回答 1

Stack Overflow用户

发布于 2013-11-09 01:42:57

试试这个:

代码语言:javascript
复制
    Dim hwndParent As Long = FindWindow(vbNullString, "Genymotion") ' Parent Window by Caption
    Dim hwndButton As Long = FindWindowEx(hwndParent, IntPtr.Zero, "QWidget", "") ' First Child QWidget
    hwndButton = FindWindowEx(hwndParent, hwndButton, "QWidget", "") ' Second Child QWidget
    hwndButton = FindWindowEx(hwndButton, IntPtr.Zero, "QWidget", "content") ' "content" QWidget
    hwndButton = FindWindowEx(hwndButton, IntPtr.Zero, "QWidget", "mainFrame") ' "mainFrame" QWidget
    hwndButton = FindWindowEx(hwndButton, IntPtr.Zero, "QWidget", "") ' First Child QWidget
    hwndButton = FindWindowEx(hwndButton, IntPtr.Zero, "QWidget", "qt_scrollarea_viewport") ' "qt_scrollarea_viewport" QWidget
    hwndButton = FindWindowEx(hwndButton, IntPtr.Zero, "QWidget", "") ' First Child QWidget

请注意这两行中发生的情况:

代码语言:javascript
复制
    Dim hwndButton As Long = FindWindowEx(hwndParent, IntPtr.Zero, "QWidget", "") ' First Child QWidget
    hwndButton = FindWindowEx(hwndParent, hwndButton, "QWidget", "") ' Second Child QWidget

第一行获取句柄为001816EC的第一个QWidget。在第二行中,我们使用相同的父句柄,但我们将先前找到的小部件的句柄传递给第二个参数"hWndChildAfter“。这将获取句柄为0011686A的第二个QWidget。这两个窗口是彼此的“兄弟”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19507460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档