编写一个VBA的API代码,通过窗口的标题来捕获所有特定窗口的句柄。
创始人
2024-12-07 11:01:40
0次

以下是一个示例VBA代码,通过窗口标题来捕获所有特定窗口的句柄:

Option Explicit

Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Declare PtrSafe Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As LongPtr) As Long
Declare PtrSafe Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As LongPtr, ByVal lpString As String, ByVal cch As Long) As Long

Sub GetWindowHandlesByTitle()
    Dim hwnd As LongPtr
    Dim title As String
    Dim handles As String
    
    title = "特定窗口标题" ' 替换为需要捕获的窗口标题
    
    hwnd = FindWindow(vbNullString, vbNullString) ' 获取第一个窗口的句柄
    
    Do While hwnd <> 0
        If GetWindowTextLength(hwnd) > 0 Then
            Dim buffer As String
            buffer = Space(GetWindowTextLength(hwnd) + 1)
            GetWindowText hwnd, buffer, Len(buffer)
            If InStr(buffer, title) > 0 Then
                handles = handles & hwnd & vbCrLf
            End If
        End If
        hwnd = FindWindowEx(0, hwnd, vbNullString, vbNullString) ' 获取下一个窗口的句柄
    Loop
    
    MsgBox "匹配窗口的句柄:" & vbCrLf & handles
End Sub

请注意替换title变量的值为您要捕获的特定窗口的标题。该代码将通过遍历所有窗口的句柄,并将具有指定标题的窗口句柄保存在handles变量中。最后,它将通过消息框显示匹配窗口的句柄。

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...