c# - 如何在 C# 中获取所有打开的窗口的名称(通过特定进程)?
问题描述
我目前正在寻找一种在 c# 中获取所有打开窗口的标题/名称(如果可能,从特定进程中获取)的方法。所以一个进程可以有多个窗口,我刚刚找到了 Process.MainWindowTitle 命令,但我想要在这个进程下运行的所有窗口的名称,而不仅仅是 MainWindowTitle。是否有命令/方法来获取列表/数组中的所有窗口标题?我在互联网上搜索,但找不到任何有效或我理解的东西。如果有人有办法做到这一点并且可以向我解释,那就太棒了。
谢谢阿基拉
编辑:我找到了这个链接(http://csharphelper.com/blog/2016/08/list-desktop-windows-in-c/)但我无法让它工作,我不明白那里发生了什么. 因此,如果有人理解这一点......或者如果不是让它在控制台中打印出所有标题。我会很感激的。
解决方案
using System;
using System.Diagnostics;
using System.Linq;
//will only get process with main window title property that is not empty
Process[] processlist = Process.GetProcesses();
var processTitle = processlist.Where(c => !string.IsNullOrEmpty(c.MainWindowTitle)).Select(c => c.MainWindowTitle).ToList();
.Where(c => !string.IsNullOrEmpty(c.MainWindowTitle)
是您只选择非空的主窗口标题的部分string
。然后Select(c => c.MainWindowTitle)
only 得到MainWindowTitle property
each Process
。列出与条件ToList
匹配的所有值a因为of是Where
List<string>
property
MainWindowTitle
string
更新的答案,几乎还是一样的。
string processname = ""; //the process you want to capture
Process[] processlist = Process.GetProcesses();
var processTitle = processlist.Where(c => c.ProcessName == processname).ToList();
仍然是相同的解释,现在您c.ProcessName == processname
提供要捕获的进程(现在只会检索您提供的特定进程名称。)您现在可以调试/捕获所需的详细信息。
或参考这个解释
推荐阅读
- mysql - 查询中未使用的索引 - 使用 EXPLAIN
- microsoft-graph-api - 如果有人在 MS Graph 中下载文件时更改了文件内容会怎样?
- python - 关闭主要的抓取管道,但保持图像下载直到它在scrapy中完成
- azure - Azure DevOps 组织权限问题 - 错误 401
- github - 从 GitHub 存储库更新已使用 ansible-galaxy 安装的 Ansible 角色
- java - 为什么在并行化我的树搜索时会得到这个输出?
- audiokit - 无法加载模块“AudioKit”
- python - 二维弹性碰撞方程的实现问题
- django - 删除图像字段和 upload_to_path 方法后迁移出错
- android-studio - 如何在 Kotlin 中返回两个值?