アプリケーションが本当に友好的である場合、つまり、両方が自分の制御下にある場合、より簡単な解決策は、通信ソケットまたは共有ライブラリを使用して、他のアプリケーションを起動できるようにすることです。
これは十分に注意が必要なようです -- 通話を遅らせます:
QTimer::singleShot( 2000,
this,
SLOT( toForeground() )
);
このスロットに:
void MainWindow::toForeground()
{
qDebug() << SetForegroundWindow( this->winId() );
}
これにより、タスク バーが表示され、アプリケーション アイコンがすぐに強調表示されます。アプリケーションに切り替わりません。
Qt 独自のactivateWindow()
結果として、タスク バー アイコンがより持続的に点滅しますが、アプリケーションは起動しません。
これは以前に試されました:
後者は次のことを示唆しています。
showNormal();
raise();
activateWindow();
しかし、それは Qt 4.8.1 および MSVC++ 2010 を搭載した Windows 7 64 ビットでは機能しません。
他の質問でも言及されていると思うコードは次のとおりです。
著者は書いています
ウィンドウは常に前面に表示されますが、フォーカスはシステムのどこかにあります :-( 他のアプリでは…</p>
これは確認できます。
編集: Windows の動作は、レジストリを介してグローバルに変更できます (すべきではありません!
? )
。 _behavior_under_windows