个性化阅读
专注于IT技术分析

如何在WinForms中使用C#在Windows的任务栏中检索(列出)所有打开的应用程序的标题和进程ID

在某些应用程序中, 例如, 编写了一些屏幕截图工具, 为了从特定窗口创建屏幕截图, 需要使用该窗口的当前标题, 因为它们可能不是用C#编写的, 因此它们没有检查进程ID或可以简化过滤的内容。

如果你使用这些CLI工具之一作为C#工具的依赖项, 则可以在任务栏上列出所有具有Window的进程, 这样你就可以从所有进程中获取标题, 从而可以提取标题。创建你的屏幕截图。

通过获取Windows所有进程的列表并验证它们是否具有窗口标题, 可以轻松完成此操作:

// 1. Import System Diagnostics
using System.Diagnostics;

// 2. Create a list of the active processes of Windows
Process[] processlist = Process.GetProcesses();

// Iterate over them
foreach (Process process in processlist)
{
    // If the process appears on the Taskbar (if has a title)
    // print the information of the process
    if (!String.IsNullOrEmpty(process.MainWindowTitle))
    {
        Console.WriteLine("Process:   {0}", process.ProcessName);
        Console.WriteLine("    ID   : {0}", process.Id);
        Console.WriteLine("    Title: {0} \n", process.MainWindowTitle);
    }
}

上一个代码片段将在终端中输出以下输出:

Process:   chrome
    ID   : 11896
    Title: c# - get the titles of all open windows - Stack Overflow - Google Chrome 

Process:   WinStore.App
    ID   : 15348
    Title: Microsoft Store 

Process:   SystemSettings
    ID   : 11020
    Title: Settings 

Process:   ApplicationFrameHost
    ID   : 8848
    Title: Settings 

Process:   Code
    ID   : 7852
    Title: ? Untitled-2 - electron-quick-start - Visual Studio Code 

Process:   WindowsInternal.ComposableShell.Experiences.TextInput.InputApp
    ID   : 13864
    Title: Microsoft Text Input Application 

Process:   devenv
    ID   : 16860
    Title: Sandbox (Running) - Microsoft Visual Studio 

Process:   Sandbox
    ID   : 15524
    Title: Form1 

Process:   NVIDIA Share
    ID   : 13076
    Title: NVIDIA GeForce Overlay 

就是这样, 你现在应该能够按Windows中所有打开的应用程序的窗口标题进行过滤。

赞(0)
未经允许不得转载:srcmini » 如何在WinForms中使用C#在Windows的任务栏中检索(列出)所有打开的应用程序的标题和进程ID

评论 抢沙发

评论前必须登录!