【问题标题】:How can I get list of Applications as shown in Task Manager (Not Processes)如何获取任务管理器中显示的应用程序列表(不是进程)
【发布时间】:2018-11-02 20:16:10
【问题描述】:

我正在尝试获取当前使用 Windows 应用程序运行的应用程序的列表。

    using System.Diagnostics;
    Process[] processes = Process.GetProcesses();
        List<string > listProc=new List<string>() ;
        foreach (Process p in processes)
        {
            listProc.Add(p.ProcessName );               
        }
        string joined = string.Join(",", new List<string>(listProc).ToArray());
        ScriptingObject.WriteLogMessage("List of Processes: " + joined , true);

我也试过这个:

    if (!String.IsNullOrEmpty(p.MainWindowTitle))
            {
                listProc.Add(p.MainWindowTitle);

            }

这些可以很好地列出 Windows 任务管理器列出的进程,但我如何查看“应用程序”选项卡下列出的应用程序?

第一个选项列出了比第二个更多的进程,如果我以管理员身份运行,我会看到更多,但我仍然没有看到任务管理器列出的所有应用程序。

我认为我正在寻找的应用程序可能被描述为子窗口。

【问题讨论】:

  • 你有没有想过如何做到这一点?我有同样的问题...

标签: c# windows-applications


【解决方案1】:
Process[] processes = Process.GetProcesses();
List<string > listProc=new List<string>() ;
foreach (Process p in processes)
{
    if (p.MainWindowHandle.ToInt32()>0)
    {
        listProc.Add(p.MainWindowTitle);
    }               
}

【讨论】:

  • 虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
【解决方案2】:

如果你想只登记那些对 Window 可见的进程,你可以试试这个,

if (p.MainWindowHandle != IntPtr.Zero)
        {
            listProc.Add(p.MainWindowTitle);

        }

【讨论】:

  • 找不到我的应用程序。
猜你喜欢
  • 1970-01-01
  • 2015-02-27
  • 2021-04-03
  • 2012-08-27
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多