app.xaml.csからWPF Windowsアプリケーションをフォーカスする方法

StackOverflow https://stackoverflow.com//questions/25078470

  •  02-01-2020
  •  | 
  •  

質問

これが良い習慣ではないかもしれないことを知っていますが、それでもそれは私が実装したいものです。

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;
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top