私はすべての開いているアプリケーションのリストを取得しようとしています。具体的には、タスクマネージャを開き、アプリケーションタブに移動すると、その一覧が表示されます。私が見つけたいくつかの例ですべてのアプリケーションのリストを取得
foreach (var p in Process.GetProcesses())
{
try
{
if (!String.IsNullOrEmpty(p.MainWindowTitle))
{
sb.Append("\r\n");
sb.Append("Window title: " + p.MainWindowTitle.ToString());
sb.Append("\r\n");
}
}
catch
{
}
}
と同様に、これは私のためにすべてのアプリケーションを引っ張っていません:
私はこのようなものを使用してみました。私がタスクマネージャーで見ることのできるものの半分、または私が開いていることを知っているのは、約半分にすぎません。たとえば、この方法では何らかの理由でNotepad ++やSkypeを取得することはできませんが、Google Chrome、電卓、Microsoft Wordを使用します。
これが正しく動作しない理由やその理由を知っている人はいますか?
また、友人は権限の問題である可能性がありますが、私は管理者としてVisual Studioを実行しており、変更されていません。
EDIT:問題は、私が与えたソリューションのほとんどがすべてのプロセスのリストを返すということです。これは私が望むものではありません。私は、タスクマネージャに表示されるリストのように、開いているアプリケーションやウィンドウを必要とします。すべての単一プロセスのリストではありません。
また、空のキャッチブロックを含め、ここには悪いコードがあることは知っています。これは最初の場所でどのように動作するかを把握するための簡単なプロジェクトでした。
これらのアプリにメインウィンドウのタイトルがない可能性が高いためです。 – cgTag
プログラムにメインウィンドウのタイトルがある場合、Chris Process [] processes = Process.GetProcesses(); foreach(プロセス内のvar proc) { if(!string.IsNullOrEmpty(proc.MainWindowTitle)) Console.WriteLine(proc.MainWindowTitle); } また、WMIを使用することもできます。http://msdn.microsoft.com/en-us/library/windows/desktop/aa394599%28v=vs.85%29.aspx – MethodMan
コピー&ペーストしていますか? –