Ritterbruder
Ritterbruder

Reputation: 53

.NET How to check if a Windows process is running as an "App" or as a "Background application"

On Windows 8.1 you go into the task manager and check the list of processes, there are two lists: - One for "Apps", which are visible foreground apps - One for "Background processes", which are processes running in the background

My end goal is to time how long it takes an application to load. When the application is still loading, it appears in "Background processes". However, once loaded, it appears in "Apps". This is going to be my criteria on what constitutes an app finishing loading.

I am using a System.Diagnostics.Process object to try to accomplish this. However, I am struggling to come up with a way to distinguish between a Process under "Background processes" and a Process under "Apps".

Does anyone have an idea on how to make this distinction? I looked through MSDN and tried different methods, none of which have been successful.

Upvotes: 4

Views: 9670

Answers (3)

123iamking
123iamking

Reputation: 2703

Normally, if a process is an "App", it should have its own window's name, otherwise, it is a "Background application". Thus the code should be as follow:

Process[] arrProcess = Process.GetProcesses();

foreach (Process process in arrProcess)
{
    if (!string.IsNullOrEmpty(process.MainWindowTitle))
    {
    //Do something with your App
    }
    else
    {
    //Do something with your Background process
    }
}

Upvotes: 3

devdimi
devdimi

Reputation: 2462

Services are also usually created by SYSTEM user - the column "User Name" in task manager.

Upvotes: 0

TcKs
TcKs

Reputation: 26632

The property System.Diagnostics.Process.MainWindowHandle is zero when process has not UI (i.e. is background process).

Upvotes: 12

Related Questions