簡體   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