繁体   English   中英

c# - 如何在c#中获取所有打开窗口的名称(通过特定进程)?

[英]How to get names of all open windows (by a specific process) in 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)仅获得以下MainWindowTitle propertyMainWindowTitle property :每个ProcessToList列表中的所有匹配的值Where状态到List<string>因为propertyMainWindowTitlestring

更新的答案,几乎还是一样。

string processname = ""; //the process you want to capture
Process[] processlist = Process.GetProcesses();
var processTitle = processlist.Where(c => c.ProcessName == processname).ToList();

仍然是相同的解释,现在您提供要捕获的进程( c.ProcessName == processname现在将仅检索提供的特定进程名称。),现在可以调试/捕获所需的详细信息。

或参考此说明

https://stackoverflow.com/a/17890354/2122217

我知道,我知道...我在回答自己的问题。 但是我终于找到了满足我需求的解决方案。 我发现它只是知道,我想分享“我的”解决方案。 https://www.tcx.be/blog/2006/list-open-windows/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM