簡単な質問があります - 非コンソール (つまり、CWinApp) アプリケーションがCTRL+を受け取って処理できるBREAKということはありますか?
残念ながら、Microsoft HPC の制御下で実行される従来の CDialog ベースのアプリを使用しており、HPC はCTRL+を使用BREAKしてプログラムをキャンセルします (バックグラウンドで非コンソール アプリを実行している人は誰もいないと思います)。
乾杯。
でAttachConsoleを呼び出すと、うまくいくATTACH_PARENT_PROCESS
はずです。これにより、プロセスがHPCコンソールに接続され、コントロールブレーク信号を受信できるようになります。SetConsoleCtrlHandlerを呼び出す前に、おそらくこれを行う必要があります。
それでも問題が解決しない場合は、代わりにAllocConsoleを試してください。HPCに独自のコンソールがない場合は、サブプロセスが新しいコンソールグループを作成したと想定している可能性があります(これはコンソールモードアプリケーションの場合は自動的に行われます)。その場合、コントロールブレーク信号が送信されます。サブプロセスPIDに。その場合、コンソールグループが自動的に作成されたか明示的に作成されたかは関係ありません。
SetConsoleCtrlHandlerがコンソールモードアプリケーションで期待どおりに機能することを確認することにより、HPCが実際にコントロールブレークシグナルを送信していることを確認することから始めたい場合があります(おそらくGenerateConsoleCtrlEventを介して) 。代わりにTerminateProcessを呼び出している場合は、それについて何もできません。