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

在某些应用程序中, 例如, 编写了一些屏幕截图工具, 为了从特定窗口创建屏幕截图, 需要使用该窗口的当前标题, 因为它们可能不是用C#编写的, 因此它们没有检查进程ID或可以简化过滤的内容。
如果你使用这些CLI工具之一作为C#工具的依赖项, 则可以在任务栏上列出所有具有Window的进程, 这样你就可以从所有进程中获取标题, 从而可以提取标题。创建你的屏幕截图。
通过获取Windows所有进程的列表并验证它们是否具有窗口标题, 可以轻松完成此操作:

// 1. Import System Diagnosticsusing System.Diagnostics; // 2. Create a list of the active processes of WindowsProcess[] processlist = Process.GetProcesses(); // Iterate over themforeach (Process process in processlist){// If the process appears on the Taskbar (if has a title)// print the information of the processif (!String.IsNullOrEmpty(process.MainWindowTitle)){Console.WriteLine("Process:{0}", process.ProcessName); Console.WriteLine("ID: {0}", process.Id); Console.WriteLine("Title: {0} \n", process.MainWindowTitle); }}

上一个代码片段将在终端中输出以下输出:
Process:chromeID: 11896Title: c# - get the titles of all open windows - Stack Overflow - Google Chrome Process:WinStore.AppID: 15348Title: Microsoft Store Process:SystemSettingsID: 11020Title: Settings Process:ApplicationFrameHostID: 8848Title: Settings Process:CodeID: 7852Title: ? Untitled-2 - electron-quick-start - Visual Studio Code Process:WindowsInternal.ComposableShell.Experiences.TextInput.InputAppID: 13864Title: Microsoft Text Input Application Process:devenvID: 16860Title: Sandbox (Running) - Microsoft Visual Studio Process:SandboxID: 15524Title: Form1 Process:NVIDIA ShareID: 13076Title: NVIDIA GeForce Overlay

【如何在WinForms中使用C#在Windows的任务栏中检索(列出)所有打开的应用程序的标题和进程ID】就是这样, 你现在应该能够按Windows中所有打开的应用程序的窗口标题进行过滤。

    推荐阅读