vb如何获得一个正在运行程序的窗体名称
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,带到前台的窗口
注解
不应随便使用它,因为一旦程序突然从后台进入前台,可能会使用户产生迷惑 参考技术A 用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 '获得窗口名 参考技术B 窗体的名称是它的name属性
delphi获取窗体的句柄
两个独立的问题。
1.我想用ShellExecute命令运行外部程序(带有窗体),同时想获得这个窗体的句柄。补充:在实际中我想多次打开同个外部程序,并想通过句柄区分它们
2.在外部程序运行到指定的时候,执行某一条命令。
补充:比如,外部程序完全打开需要一定的时间,我想等其完全打开后再执行某一条语句。
谢谢了
谢谢你,我找了,通过参数lpProcessInformation获得进程的句柄,再通过WaitForSingleObject设置等待的时间实现了第二个目的。 但是createprocess中的参数lpProcessInformation只有进程和当前线程的句柄,还是没有窗体的句柄,请问怎么获得窗体的句柄,麻烦说详细点。 而且我发现用createprocess同时打开两次某一个外部程序,参数lpProcessInformation的hProcess和hThread在两次中是相同的,起不到区分打开先后的作用。
以上是关于vb如何获得一个正在运行程序的窗体名称的主要内容,如果未能解决你的问题,请参考以下文章