.exe ファイル (具体的にはコンソール アプリケーション) を、最初に起動したときに動作する 1 つの機能するプログラムにフォーカスしたいと思いますが、2 回目に実行すると (最初のファイルが存在する間)、最初に起動されたプログラムにフォーカスを移すことができます。それはQtでまったく可能ですか?
4520 次
1 に答える
10
単一のインスタンスについては、 Qt アプリケーションのインスタンスを 1 つだけ実行する を参照してください。
移植性を無視して、Windows で実行している場合、別の一般的なアプローチは、アプリケーションの起動時に名前付きパイプ(または名前付きミューテックス) を作成し、終了する前に破棄することです。名前付きパイプが既に存在する場合は、別のインスタンスが既に実行されています。名前付きパイプに書き込んで、他のインスタンスにそのウィンドウを前面に出すように要求することもできますが、コンソール アプリケーションは特にこれからメリットを得られない場合があります。
既存のインスタンスにフォーカスするもう 1 つの方法は、既に実行中のインスタンスのウィンドウを見つけて、そのでSetFocusHWND
を呼び出すか、プラットフォームで対応する関数を呼び出すことです。
于 2013-08-29T05:24:14.920 に答える