VB.net如果获取其他窗口标题栏

时间:2022-01-31 14:01:40
首先申明3个API
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As IntPtr, ByVal lpString As String, ByVal cch As Integer) As Integer
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As IntPtr) As Integer
Declare Function GetForegroundWindow Lib "user32" () As Integer

Dim hdl As New IntPtr(GetForegroundWindow) '获取活动窗口的句柄
Dim strTitle As String = Space(GetWindowTextLength(hdl) + 1) '构造窗口标题字符串缓冲区
GetWindowText(hdl, strTitle, strTitle.Length) '获取窗口文字
 msgbox(strTitle)
这是获取程序当前窗口的标题
如果我要获取其他程序的标题 该怎么获取?假设那个窗口的标题栏 是  ABC:123456。 ABC:987654
我需要让ABC:后面的数字 显示在 TEXTBOX1里。ABC:是固定的,后面的数字是随即可变的。

请教下 大神该怎么操作。。


12 个解决方案

#1


findwindow,如果要查的是子窗口,再加上findwindowex

#2


引用 1 楼 Runnerchin 的回复:
findwindow,如果要查的是子窗口,再加上findwindowex


能说的详细点吗?

#3


顶上去 分不要浪费了。。求大神指导下!~

#4


没人知道吗?

#5


……你是想解决问题呢?还是想伸手要代码?已经告诉你怎么实现啦,相关的文章一搜一大堆。不能吃个饭也要别人喂吧? VB.net如果获取其他窗口标题栏

#6


要代码,最好能直接运行出来  。谢谢 好人一生平安。。
有其他知道的大神吗

#7


不用API也可以用.net中的  process类,根据进程名获取,再读取process.mainwindowtitle属性

#8


首先你已经会获取窗口的标题了,那么把它封装成函数:GetWindowTitle(),除此之外还要用到2个API:GetDesktopWindow()、GetWindow(),引入方法和相关常量你得自己去搜,然后下面这个函数就可以解决你的问题了

Function FindWindowByHeader(header As String) As Integer
    Dim hwnd As Integer = GetDesktopWindow()
    hwnd = GetWindow(hwnd, GW_CHILD)
    Do While hwnd <> 0
        Dim Title As String = GetWindowTitle(hwnd)
        If Title.IndexOf(header) == 0 Then _
            Return hwnd
        hwnd = GetWindow(hwnd, GW_HWNDNEXT)
    Loop
    Return 0
End Function


你要养成举一反三的习惯,网上虽没有完全符合你要求的例子,但相似的也不少,起码遍历所有窗口的随处可见。不要总是张口要代码。

#9


VB6.0 能获取以前用过的。但是Net上没有用过。

#10


这至少是 10年前 被玩烂的东西的

去百度  都比等答案快

#11


“ABC:123456”.split(":")(1) 就是你要的123456 

#12


该回复于2015-11-07 11:10:14被管理员删除

#1


findwindow,如果要查的是子窗口,再加上findwindowex

#2


引用 1 楼 Runnerchin 的回复:
findwindow,如果要查的是子窗口,再加上findwindowex


能说的详细点吗?

#3


顶上去 分不要浪费了。。求大神指导下!~

#4


没人知道吗?

#5


……你是想解决问题呢?还是想伸手要代码?已经告诉你怎么实现啦,相关的文章一搜一大堆。不能吃个饭也要别人喂吧? VB.net如果获取其他窗口标题栏

#6


要代码,最好能直接运行出来  。谢谢 好人一生平安。。
有其他知道的大神吗

#7


不用API也可以用.net中的  process类,根据进程名获取,再读取process.mainwindowtitle属性

#8


首先你已经会获取窗口的标题了,那么把它封装成函数:GetWindowTitle(),除此之外还要用到2个API:GetDesktopWindow()、GetWindow(),引入方法和相关常量你得自己去搜,然后下面这个函数就可以解决你的问题了

Function FindWindowByHeader(header As String) As Integer
    Dim hwnd As Integer = GetDesktopWindow()
    hwnd = GetWindow(hwnd, GW_CHILD)
    Do While hwnd <> 0
        Dim Title As String = GetWindowTitle(hwnd)
        If Title.IndexOf(header) == 0 Then _
            Return hwnd
        hwnd = GetWindow(hwnd, GW_HWNDNEXT)
    Loop
    Return 0
End Function


你要养成举一反三的习惯,网上虽没有完全符合你要求的例子,但相似的也不少,起码遍历所有窗口的随处可见。不要总是张口要代码。

#9


VB6.0 能获取以前用过的。但是Net上没有用过。

#10


这至少是 10年前 被玩烂的东西的

去百度  都比等答案快

#11


“ABC:123456”.split(":")(1) 就是你要的123456 

#12


该回复于2015-11-07 11:10:14被管理员删除