linqについてはほとんど何も知りません。
私はこれをやっています:
var apps = from app in Process.GetProcesses()
where app.ProcessName.Contains( "MyAppName" ) && app.MainWindowHandle != IntPtr.Zero
select app;
これにより、その基準に一致するすべての実行中のプロセスが取得されます。
しかし、私は最初のものを取得する方法がわかりません。私がネット上で見つけることができる例は、私がこれをしなければならないことを暗示しているようです
var matchedApp = (from app in Process.GetProcesses()
where app.ProcessName.Contains( "MyAppName" ) && app.MainWindowHandle != IntPtr.Zero
select app).First();
これはやや醜い印象を与え、一致するプロセスがない場合は例外をスローします。もっと良い方法はありますか?
アップデート
私は実際に最初に一致するアイテムを見つけて、それを呼び出そうとしてSetForegroundWindow
います
私はこの解決策を思いつきました。これも醜くてひどいものだと思いますが、上記よりも優れています。何か案は?
var unused = from app in Process.GetProcesses()
where app.ProcessName.Contains( "MyAppName" ) && app.MainWindowHandle != IntPtr.Zero
select SetForegroundWindow( app.MainWindowHandle ); // side-effects in linq-query is technically bad I guess