VBA - 获取任务栏应用程序

作者:编程家 分类: vba 时间:2025-08-29

使用VBA编程可以方便地获取任务栏应用程序的信息。通过编写相应的代码,我们可以获取当前打开的应用程序的名称、图标、窗口句柄等信息,从而实现一些自动化操作或者对应用程序进行控制和管理。下面我们将详细介绍如何使用VBA获取任务栏应用程序,并提供一个案例代码供参考。

获取任务栏应用程序的名称

要获取任务栏应用程序的名称,我们可以使用Windows API函数`EnumWindows`和`GetWindowText`。`EnumWindows`函数可以遍历系统中的所有窗口,`GetWindowText`函数可以获取窗口的标题文本。

下面是一个简单的示例代码,演示如何获取所有任务栏应用程序的名称,并将其输出到Excel表格中:

vba

Sub GetTaskbarAppNames()

Dim hwnd As Long

Dim taskbarAppNames As String

'遍历所有窗口

hwnd = FindWindow("Shell_TrayWnd", vbNullString)

hwnd = FindWindowEx(hwnd, 0, "TrayNotifyWnd", vbNullString)

hwnd = FindWindowEx(hwnd, 0, "SysPager", vbNullString)

hwnd = FindWindowEx(hwnd, 0, "ToolbarWindow32", vbNullString)

'获取任务栏应用程序的名称

Do While hwnd <> 0

Dim buffer As String * 255

Dim length As Long

length = GetWindowTextLength(hwnd)

buffer = Space$(length + 1)

GetWindowText hwnd, buffer, length + 1

'输出到Excel表格中

taskbarAppNames = taskbarAppNames & buffer & vbCrLf

hwnd = FindWindowEx(hwnd, 0, "ToolbarWindow32", vbNullString)

Loop

'将结果输出到Excel表格中的A列

Range("A1").Value = taskbarAppNames

End Sub

案例代码说明

上述案例代码通过遍历窗口层级,找到任务栏的窗口句柄,并通过`GetWindowText`函数获取窗口的标题文本。在循环中,将获取到的任务栏应用程序的名称拼接并最终将结果输出到Excel表格的A列。

使用VBA获取任务栏应用程序的图标

要获取任务栏应用程序的图标,我们可以使用Windows API函数`ExtractIconEx`和`DrawIconEx`。`ExtractIconEx`函数可以提取应用程序的图标,`DrawIconEx`函数可以绘制图标到指定的设备上下文中。

下面是一个简单的示例代码,演示如何获取任务栏应用程序的图标,并将其绘制到Excel表格中:

vba

Sub GetTaskbarAppIcons()

Dim hwnd As Long

Dim hdc As Long

Dim iconHandle As Long

Dim iconWidth As Long

Dim iconHeight As Long

'遍历所有窗口

hwnd = FindWindow("Shell_TrayWnd", vbNullString)

hwnd = FindWindowEx(hwnd, 0, "TrayNotifyWnd", vbNullString)

hwnd = FindWindowEx(hwnd, 0, "SysPager", vbNullString)

hwnd = FindWindowEx(hwnd, 0, "ToolbarWindow32", vbNullString)

'获取任务栏应用程序的图标

Do While hwnd <> 0

hdc = GetDC(hwnd)

'获取图标大小

iconWidth = 32

iconHeight = 32

'提取图标

iconHandle = ExtractIconEx("shell32.dll", -1, 0, 0, 1)

'绘制图标到Excel表格中

DrawIconEx hdc, 0, 0, iconHandle, iconWidth, iconHeight, 0, 0, DI_NORMAL

'释放资源

ReleaseDC hwnd, hdc

DestroyIcon iconHandle

hwnd = FindWindowEx(hwnd, 0, "ToolbarWindow32", vbNullString)

Loop

End Sub

案例代码说明

上述案例代码通过遍历窗口层级,找到任务栏的窗口句柄,并通过`ExtractIconEx`函数提取应用程序的图标。然后,通过`DrawIconEx`函数将图标绘制到指定的设备上下文中。在循环中,可以根据需要自行调整图标的大小和位置。

通过上述案例代码,我们可以轻松地获取任务栏应用程序的名称和图标,并将其输出到Excel表格中。这些信息可以帮助我们实现一些自动化操作或者对应用程序进行控制和管理。无论是对于个人用户还是企业用户,这些功能都具有很大的实用性和便利性。希望本文对您有所帮助!