開いているすべてのアプリケーションのリストを取得しようとしています。具体的には、タスクマネージャーを開いてアプリケーションタブに移動すると、そのリスト.
私はこのようなものを使ってみました:
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 をピックアップします。
これが正しく機能しない理由、またはその方法を知っている人はいますか?
また、友人はそれが権限の問題である可能性があると示唆しましたが、管理者としてビジュアルスタジオを実行していますが、変更されていません.
編集:私が得ている問題は、私が与えられた解決策のほとんどがすべてのプロセスのリストを返すだけであり、これは私が望むものではないということです. タスクマネージャーに表示されるリストのように、開いているアプリケーションまたはウィンドウが必要です。すべてのプロセスのリストではありません。
また、空の catch ブロックなど、ここに悪いコードがあることもわかっています。これは、そもそもこれがどのように機能するかを理解するためだけの使い捨てプロジェクトでした。