VB中如何获取未知标题的窗口句柄

VB中如何获取未知标题的窗口句柄,第1张

方法有好多种

1如果窗口置于最顶层的话可以用FindWindow

窗口句柄=FindWindow(窗口类名,

vbNullString)

2如果窗口是子窗口,先得知他的标识ID,再用GetDlgItem

窗口句柄=GetDlgItem(父窗口句柄,

标识ID)

3还可以用GetWindow找与某源窗口有特定的关系

窗口句柄=GetWindow(父窗口句柄,GW_CHILD)

GetWindow第二个参数的介绍:

GW_CHILD

寻找源窗口的第一个子窗口

GW_HWNDFIRST

为一个源子窗口寻找第一个兄弟(同级)窗口,或寻找第一个顶级窗口

GW_HWNDLAST

为一个源子窗口寻找最后一个兄弟(同级)窗口,或寻找最后一个顶级窗口

GW_HWNDNEXT

为源窗口寻找下一个兄弟窗口

GW_HWNDPREV

为源窗口寻找前一个兄弟窗口

GW_OWNER

寻找窗口的所有者

它是一个子窗口,没有标题,每次登陆时类名就变了,怎么得到它的窗口句柄呢?用Findwindow没用啊!

你是什么语言??VB还是C++?

给你个VB CODE :

Function GetQQpath()

Dim ps, s '获取QQ进程所存在的路径

s = "qqexe"

For Each ps In GetObject("winmgmts:\\\root\cimv2:win32_process")instances_ '循环进程

If UCase(psName) = UCase(s) Then

Form1Label1Caption = psexecutablepath

GoTo q

End If

Next

q:

End Function

这个可以用知道进程名就可以知道程序路径了,原理很简单。自己摸索、

(针对新手: 结果显示在label1上面。否则会出现缺少对象)

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

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

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

获取句柄方式有很多种

比如:

Hwnd = PluginWindowMousePoint()//得到鼠标指向窗口

Hwnd = PluginWindowForeground()//得到当前最前面的窗口

上面两个是常用的 下面这个比较复杂一些

Hwnd = PluginWindowFind(0, "无标题 - 记事本")//通过类名标题查找窗口句柄

希望能帮助到你

我哦 谢谢

以上就是关于VB中如何获取未知标题的窗口句柄全部的内容,包括:VB中如何获取未知标题的窗口句柄、通过api获取窗口句柄是通过类名和标题得到,如果我软件标题不固定。还有什么其它的方法得到窗口句柄、在VB中,如何通过FindWindow查找已知标题中的一部分文字的窗口的句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9625336.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存