app.xaml.csからWPF Windowsアプリケーションをフォーカスする方法
質問
これが良い習慣ではないかもしれないことを知っていますが、それでもそれは私が実装したいものです。
I Windowsアプリケーションは、1つのインスタンスを実行したいだけです。ユーザーがプログラムを再度起動しようとすると、メッセージボックスはプログラムがすでに実行されていることを示します。このチェックはapp.xaml.csで実行されます。
これまでのところ良く。すべてが予想通りに動作します。
この機能を拡張して、フォーカスを与え、プログラムのメインウィンドウを他のウィンドウやアプリケーションよりもユーザーデスクトップの前面に移動します。私はたくさんのアプローチを試しましたが、それを仕事にすることはできません。これは、アプリケーションがすでに実行されているかどうかをテストしているapp.xaml.csでも発生する必要があります。
WPFでこれを行うことはできませんか?私はPinvokesや他のものを試しましたが、私のために働くようなものは何もありません。
ベストアンズ
ニッキ
解決 2
解を見つけました。
VisualBasicへの参照の追加は、Interactive.AppActivateへのアクセスを提供します。
このページに、解決策を渡しました。P>
次の方法で実行処理を確認します。
Process currentProcess = Process.GetCurrentProcess();
var runningProcess = (from process in Process.GetProcesses()
where
process.Id != currentProcess.Id &&
process.ProcessName.Equals(
currentProcess.ProcessName,
StringComparison.Ordinal)
select process).FirstOrDefault();
if (runningProcess != null)
{
Microsoft.VisualBasic.Interaction.AppActivate(runningProcess.Id);
return;
}
. 他のヒント
それを起動しましたか?
Application.Current.MainWindow.Activate();
.
もちろん、あなたがそれが常に上に滞在するのが好きなら:
Application.Current.MainWindow.Topmost = true;
. 所属していません StackOverflow