次のようにProcess.MainWindowTitleにアクセスする場合...
Process[] processes = Process.GetProcessesByName( "iexplore" );
...そして、結果の配列をループすると、MainWindowTitle
配列内の1つを除くすべての項目が常に空になります。私の場合、2つのInternet Explorerウィンドウを開いています。1つは1つのタブで、もう1つは2つのタブがあります。
コードを実行すると、最後にアクティブにしたウィンドウとタブのMainWindowTitleが常に取得され、他のすべては空のままになります。奇妙なことに、MainWindowTitleが入力されるプロセスIDは常に同じです。コードを実行する前に、他のIEウィンドウまたはタブをアクティブにすると、プロセスIDは常に同じになります。
if ( !processes.Any() )
{
MessageBox.Show( "TODO - No matching process found" );
return;
}
if ( processes.Count() > 1 )
{
foreach ( Process currentProcess in processes )
{
// More than one matching process found
checkedListBox1.Items.Add( currentProcess.Id + " - " + currentProcess.MainWindowTitle + " - " + currentProcess.ProcessName );
}
return;
}
したがって、出力は次のように最初の実行である可能性があります。
- 4824 --- iexplore
- 3208 --- iexplore
- 4864-Google-Windows InternetExplorer-iexplore
次の実行(事前に選択された他のIEウィンドウを使用):
- 4824 --- iexplore
- 3208 --- iexplore
- 4864-id Software-Windows Internet Explorer-iexplore
この投稿について読んだことがありますが、問題についてはこれ以上理解できませんでした(とにかく、多少異なる方向に進んでいるようです)。
空でないMainWindowTitleを常に1つだけ取得するのはなぜですか?