vb如何获得一个正在运行程序的窗体名称

我知道如何获得一个运行程序的句柄 可我现在想要获得一个窗体的名称 不是caption 最好给上具体的代码
采纳后加分

先用获得窗口的句柄,然后再把它设置成焦点,用下面的两个函数。

FindWindow

VB声明
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
说明
寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄;该类是所有运行中vb执行程序的一部分。获得句柄后,可用api函数GetWindowText取得这个窗口的名称;该名也是应用程序的标题)
返回值
Long,找到窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError
参数表
参数 类型及说明
lpClassName String,指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,表示接收任何类
lpWindowName String,指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;或设为零,表示接收任何窗口标题
注解
很少要求同时按类与窗口名搜索。为向自己不准备参数传递一个零,最简便的办法是传递vbNullString常数

示例
Dim hw&, cnt&
Dim rttitle As String * 256
hw& = FindWindow("ThunderRT5Main", vbNullString) ' ThunderRTMain under VB4
cnt = GetWindowText(hw&, rttitle, 255)
MsgBox Left$(rttitle, cnt), 0, "RTMain title"

SetForegroundWindow

VB声明
Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Long
说明
将窗口设为系统的前台窗口。这个函数可用于改变用户目前正在操作的应用程序
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,带到前台的窗口
注解
不应随便使用它,因为一旦程序突然从后台进入前台,可能会使用户产生迷惑
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-07
用API喽
声明:
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
使用
s = String(255, 0) '分配变量空间
GetWindowText hwnd, s, 255 '获得窗口名本回答被网友采纳
第2个回答  2013-11-07
窗体的名称是它的name属性

vb如何获得一个正在运行程序的窗体名称
寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄;该类是所有运行中vb执行程序的一部分。获得句柄后,可用api函数GetWindowText取得这个窗口的名称;该名也是应用程序的标题)返回值 Long,找到窗口的句柄。如未找到相符窗口,则返...

VB根据进程名获取对应窗体标题
判断窗口的所属进程。建立一个集合。最后通过索引显示就OK了。

vb 如何根据进程名获取窗体标题
正着做有点难,那么反着做。枚举窗口,获得pid,得到进程名,判断,ok 下面的代码是获得所有窗口名称的,因为一个程序不止有一个顶层窗口,所以你可能还需要根据窗口属性判断以下是不是需要的。对于一些程序不允许打开进程或者获取路径的,就没有办法了,在这里我直接忽略。在我这wps就获取不到路径。另...

vb 检测程序是否正在运行,若正在运行则显示窗体
VB遍历进程查找窗口,这个过程很繁琐,而且代码量很大,所以我的代码用了巧妙的方法,在运行时在注册表保存了窗口句柄,这样就不用再查找了。测试通过,环境Win7+VB6:Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As LongConst SW_SHOW = 5P...

VB 如何得到当前任务栏在运行的所有窗体的标题
需要api的支持,有人已经写出来了:'获取任务栏窗体名称 Option Explicit Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Public Declare Function GetWindow Lib "user32" (ByVal hwnd As...

VB,如何调用一个窗体
可以利用show函数,具体格式如下:(假设打开Form1,关闭Form2)Private Sub Command1_Click()Form1.Show Unload Form2 End Sub 望采纳~有问题加Q798105509

VB里如何通过PID得到进程名称
窗体上添加一个 text 一个按钮 只需在text中输入进程名单击一下按钮 就可以 只需要三个api Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long Private Declare Function Process32First Lib "kernel32" (ByVal h...

vb如果用窗口句柄获取窗口标题名称
lpString As String, ByVal cch As Long) As Long Private Sub Command1_Click()Dim Tlong as long,s as String Tlong=GetWindowTextLength(hwnd)+1 s=String(Tlong,chr(0)) '必须要的 GetWindowText hwnd,s,Tlong Msgbox s End Sub hwnd是你获得的窗体句柄,s就是你要的窗体标题了 ...

VB,如何调用某个已经打开的程序窗口?
可以使用vb里面的AppActivate 语句来激活某个已经打开的程序窗口,语句如下:AppActivate title[, wait]参数 title 必需的。字符串表达式,所要激活的应用程序窗口的标题。可以使用 Shell 函数返回的任务识别码来替换 title,以激活应用程序。wait 可选的。Boolean 值,说明在激活另一个应用程序之前调用...

怎样用vb获取exe自身的文件名
我想编写个程序,这个程序运行时能获取自身的程序名,比如把它重命名为"1.exe"它就能在窗体上显示"1.exe",同样把它重命名为其它的名称,它也能在窗体上显示他的名称。请问如何实现?匿名 | 浏览1308 次 |举报 我有更好的答案推荐于2017-12-16 17:27:19 最佳答案 Dim str As Stringstr = IIf(Len(App.Pa...

相似回答