繁体   English   中英

Windows 10:如何确定进程是否为应用程序/背景进程/ Windows进程

[英]Windows 10: How to determine whether a process is an App/Background Process/Windows Process

以编程方式,我如何确定Windows 10中的3个类别

  • 应用
  • 后台流程
  • Windows服务

就像任务管理器一样?

即我需要一些C#代码,可以确定应用程序列表还是后台进程列表。 在Win32_process中检查executionState不起作用。 它始终为空。

谢谢!

在此处输入图片说明

原来的问题:

  • 如何检测正在运行的应用程序列表?

对于解决方案,我有不同的看法:

某些UWP应用具有主窗口标题。 检查主窗口标题还不足以表明应用程序正在运行。

处于挂起状态的UWP应用仍将返回标题(请参见红色矩形)

在此处输入图片说明

因此,为了检测暂停状态,我们需要

  1. 应用具有标题,但未在前台运行
  2. 应用具有标题,但未在后台运行

{码}

static void byProcess()
    {
        Process[] processes = Process.GetProcesses();
        List<string> suspendedAppsWhichHasTitle = new List<string>();

        foreach (var proc in processes)
        {
            // if it has main window title
            if (!string.IsNullOrEmpty(proc.MainWindowTitle))
            {
                // the app may be in suspend state 
                foreach (ProcessThread pT in proc.Threads)
                {
                    ThreadState ts = pT.ThreadState;
                    if (ts == ThreadState.Running)
                    {
                        suspendedAppsWhichHasTitle.Add(proc.MainWindowTitle);
                    }
                }                    
            }
        }

        foreach(string app in suspendedAppsWhichHasTitle)
        {
            Console.WriteLine(app);
        }

        if (suspendedAppsWhichHasTitle.Count == 0)
        {
            Console.WriteLine("No visible app is running!");
        }
        Console.Read();
    }

}

暂无
暂无

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

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