2016-09-26 6 views
1

Windows 8.1では、タスクマネージャに入り、プロセスの一覧を確認すると、2つのリストが表示されます。 - Oneフォアグラウンドアプリケーションである「Apps」の場合 - バックグラウンドで実行されているプロセスである「バックグラウンドプロセス」の1つ.NET Windowsプロセスが「アプリケーション」または「バックグラウンドアプリケーション」として実行されているかどうかを確認する方法

私の最終目標は、アプリケーションの読み込みに時間がかかることです。アプリケーションがまだロードされている場合は、「バックグラウンド・プロセス」に表示されます。ただし、読み込まれると、「アプリ」に表示されます。これは、アプリケーション仕上げの読み込みを構成する要素に関する私の判断基準になります。

これを達成するためにSystem.Diagnostics.Processオブジェクトを使用しています。しかし、私は「バックグラウンドプロセス」の下のプロセスと「アプリ」の下のプロセスを区別する方法を考え出すのに苦労しています。

誰でもこの区別をする方法について考えていますか?私はMSDNを見て、さまざまな方法を試みましたが、いずれも成功していませんでした。

+0

おそらくバックグラウンドアプリケーションは、ウィンドウハンドルまたはメインウィンドウタイトルを持っていませんか? –

答えて

5

プロパティがSystem.Diagnostics.Process.MainWindowHandleであるのは、プロセスがUIを持たない(バックグラウンドプロセスである)場合です。

+0

_ "この値は、非表示になっているプロセス、つまりタスクバーに表示されていないプロセスでもゼロです。これは、タスクバーの右端の通知領域にアイコンとして表示されるプロセス。 "_ – stuartd

+0

@startdタスクマネージャは、これらのアプリケーションを「バックグラウンドプロセス」としてマークします。 – TcKs

+0

ちょうどサービスだけではないことを指摘したいと思っています。 – stuartd

0

サービスは通常、SYSTEMユーザーによって作成されます - タスクマネージャの「ユーザー名」列。

0

通常、プロセスが「アプリケーション」の場合は、独自のウィンドウ名が必要です。それ以外の場合は、「バックグラウンドアプリケーション」です。したがって、コードは次のようにする必要があります:

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 
    } 
} 
関連する問題