私が取り組んでいる Windows プロジェクトでは、アプリを完全に再起動するメニューを選択するつもりです。これを行う Windows または C++ 関数はありますか?
6 に答える
このためのビルトインはありませんが、適切に設計されたアプリケーションは、進行中のすべてを停止し、最初にループバックすることができます。真の「新たなスタート」が必要な場合は、新しいプロセスを生成する必要があります (おそらく、古いプロセスがシャットダウンする前に行う最後の処理として)。
いいえ、自分で行う必要があります。たとえば、アプリケーションを終了するまで待機する外部プロセスを実行してから、再度実行することができます。
実際には、Windows Vista に組み込まれた再起動マネージャー API を確認することをお勧めします。いつものように、これを心ゆくまで p-invoke することができ、Visual C++ 2010での明示的なサポートが提供されます。
CreateProcessを呼び出してから、アプリケーションの現在のインスタンスをExitProcess()で適切に閉じるか、C ランタイムにリンクする場合は main() から戻るだけです。しかし、最初に、なぜプロセスを再作成する必要があるのかを自問する必要があります。
すでにこれを行う必要があります。これ以上読む必要のない最も簡単な方法は、単純な .bat ファイルを (手動で、またはアプリケーションによって動的に) 記述し、プログラムを開始してから、そのバット ファイルをアプリケーションから呼び出すことです。
バットファイルには、アプリを起動した後にそれ自体を削除する行が含まれている場合もあります...
ExitWindowsEx はあなたが望むものです。Windows に組み込まれているshutdown.exeユーティリティを実行することもできます。
shutdown -t0 -r (restart the system after 0 seconds)