C#获取任务栏可见进程的方法

Nora
Nora
发布时间:2026-10-13| 4人浏览过
原创

在 C# 开发中,有时需要筛选出当前在任务栏上可见的进程。本文将介绍一种基于 System.Diagnostics 命名空间的简洁实现方式,通过遍历系统进程并检查主窗口标题来获取这些可见进程的信息。

实现原理

C# 提供了强大的进程管理类库。绝大多数在任务栏或桌面上有可视化窗口的应用程序(如浏览器、IDE、资源管理器等),其 Process 对象都有一个非空的 MainWindowTitle 属性。相反,纯后台服务或无界面进程的该属性通常为空字符串。

因此,核心逻辑是:

  1. 获取系统中所有运行的进程列表。
  2. 逐个检查进程的 MainWindowTitle。
  3. 如果标题长度大于 0,则视为任务栏可见进程。

操作步骤

第1步:引入必要的命名空间

确保文件头部包含以下引用,以使用进程相关功能:

using System.Diagnostics;
using System.Linq;

第2步:编写过滤逻辑代码

以下是完整的实现代码示例。该代码遍历所有进程,筛选出有主窗口的进程,并输出其关键信息。

private static void GetVisibleTasks()
{
    try
    {
        // 获取本地计算机上的所有进程
        Process[] processes = Process.GetProcesses();
        
        foreach (Process process in processes)
        {
            // 检查进程是否有主窗口标题
            // 注意:某些进程可能因权限问题无法访问此属性,需做好异常处理
            if (!string.IsNullOrEmpty(process.MainWindowTitle))
            {
                // 这里可以添加更多过滤条件,例如排除特定系统进程
                Console.WriteLine($"标题:{process.MainWindowTitle}");
                Console.WriteLine($"ID:{process.Id}");
                Console.WriteLine($"名称:{process.ProcessName}");
                Console.WriteLine($"开始时间:{process.StartTime}");
                Console.WriteLine("------------------");
            }
        }
    }
    catch (Exception ex)
    {
        // 在实际项目中,建议记录日志而不是忽略异常
        Console.WriteLine($"获取进程信息失败:{ex.Message}");
    }
}

第3步:理解代码关键点

  • Process.GetProcesses():获取当前计算机上每个进程资源的活动实例数组。
  • MainWindowTitle:获取关联进程的主窗口标题。如果进程没有用户界面或未创建任何窗口,则该属性值为空。
  • string.IsNullOrEmpty():比单纯判断长度更安全,能同时处理 null 和空字符串的情况。

注意事项

  • 权限问题:尝试访问其他用户或高权限进程(如系统服务)的属性时可能会抛出 Win32Exception。建议使用 try-catch 块包裹代码。
  • 性能影响:遍历所有进程是一项相对昂贵的操作。如果在高频循环中调用,请注意性能消耗。对于一次性查询,上述方法是可接受的。
  • 隐藏窗口:有些应用程序虽然运行了,但可能故意隐藏主窗口(即 MainWindowTitle 为空),这类进程不会被此方法捕获。

总结

通过检查 MainWindowTitle 是否为空,我们可以快速分辨出哪些进程拥有可见的桌面窗口。这是 C# 开发者监控系统活动或构建桌面辅助工具的常用基础技巧。以上就是C#获取任务栏显示进程方法的详细内容,更多关于C#进程控制技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。