在VB中,如何通过FindWindow查找已知标题中的一部分文字的窗口的句柄

比如,我知道某一个窗口的标题包括“abc”,但是除了"abc"还有其他文字,我不知道,请问如何查找这个窗口的句柄呢另外,如果有第二个窗口也满足这个特性,我如何查找到第二个... 比如,我知道某一个窗口的标题包括“abc”,但是除了"abc"还有其他文字,我不知道,请问如何查找这个窗口的句柄呢

另外,如果有第二个窗口也满足这个特性,我如何查找到第二个窗口的句柄
展开
 我来答
百度网友28a734353
2014-07-31 · TA获得超过312个赞
知道小有建树答主
回答量:289
采纳率:0%
帮助的人:247万
展开全部

您好,您可以参考以下代码:

Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd 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 FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

private sub getprocessname()
Dim lngDeskTopHandle As Long
  Dim lngHand As Long
  Dim strName As String * 255
  dim a as long
  lngDeskTopHandle = GetDesktopWindow()
  lngHand = GetWindow(lngDeskTopHandle, GW_CHILD)
  Do While lngHand <> 0
     GetWindowText lngHand, strName, Len(strName)
     lngHand = GetWindow(lngHand, GW_HWNDNEXT)
     If Left$(strName, 1) <> vbNullChar Then
        if instr(strname , "123") then
            a = FindWindow(vbNullString, CStr(strName))'此处a即所需句柄,您可以在此处中断并获取该句柄,或将句柄数据写入数组以获取所有包含"123"的窗口句柄
        end if
     End If
  Loop

如果本次回答对您有帮助,请您采纳以支持我们的发展,谢谢!!

追问
GW_CHILD
GW_HWNDNEXT
这2个常量好像没定义,是不是定义了就可以了,我测试不成功,发现的这个问题
追答
Private Const GW_CHILD = 5
Private Const GW_HWNDNEXT = 2
我对我的失误非常抱歉,由此带来的不便,请你理解,谢谢!
匿名用户
2014-07-31
展开全部
我也不知道怎么搞的我也等待 .
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式