2017-02-23 4 views
-1

ESCキーが押されるたびにプログラムを停止しようとしています。例えばキーを押すたびにPROGRAMを終了する

は、私はこのようなコードがあります:

char key; 
char msg[20]; 
printf("\n\n\t\t  press escape to quit\n\n"); 
do { 
    key = _getch(); 

    if (key == ESC) { 
     printf("Key: ESCAPE"); 
     putchar('\n'); 

    } 
    else { 
     printf("Key: %c", key); 
     putchar('\n'); 
    } 
    Sleep(5000); 


} while (key != ESC); 

return 0; 

をそして今、私はそれを行うことが可能であるESC 押すたび瞬時に私のプログラムを終了する必要がある場合? ESCが押されたときに

Sleep(5000) 

私がやりたいすべての後に5秒後に私のプログラムつもり出口が..瞬時に出口プログラムです。

どうすればいいですか?

+0

ESCを押したときにブランチを入れようとしましたか? – dmi

+0

枝にブレークを入れたらどういう意味ですか?プログラム全体を停止し、このスリープ機能を導入する別の方法はありますか?私はホットキーを作成する必要があると思う。オートチェントでは単純にホットキーを作成し、ESCキーを押すとメインループを止め、ホットキーで指示を出します。どのように私はC + +、任意のアイデアでそれを行うことができますか? –

+0

Sleep()呼び出しを追加するのは間違いでした。あなたはprintf()文の出力を見ることができるように必要と思っています。あなたはそうしなかった、Ctrl + F5を押してそれを見る。 GetConsoleProcessList()を使用して、 "Press any key to continue"スタイルの対話が必要であることを検出し、プログラムの終了時にコンソールウィンドウが消えるため、完璧にすることができます。 –

答えて

0

最も簡単な方法は、スリープコールをelseパートに移動することで、<> 'ESC'キーが押された場合にのみ実行されます。

char key; 
char msg[20]; 
printf("\n\n\t\t  press escape to quit\n\n"); 
do { 
    key = _getch(); 

    if (key == ESC) { 
     printf("Key: ESCAPE"); 
     putchar('\n'); 
    } 
    else { 
     printf("Key: %c", key); 
     putchar('\n'); 
     Sleep(5000); 
    } 

} while (key != ESC); 

return 0; 
+0

はい、あなたは本当ですが、これは私のコードがより多くの機能でもっと大きくなっているほんの一例です...私が必要とするのは、ESCプログラムの終了を押すたびにホットキーを作成することだけです。メインループでは私は 'Sleep()'機能を持っています。今度は、キーを押すとプログラム全体が終了するたびにチェックする必要があります。 –

+0

@Adam Zbudniewek:それで、ESCを押すとプログラムを終了します。キーボードの入力を処理できません。 –

+0

@rightどうすればいいですか? –

0

これはASCIIコードと比較できます。 ESCキーのASCIIコードは27です。

char key; 
char msg[20]; 
printf("\n\n\t\t  press escape to quit\n\n"); 
do { 
    key = _getch(); 

    if (key == 27) { 
     printf("Key: ESCAPE"); 
     putchar('\n'); 
    } 
    else { 
     printf("Key: %c", key); 
     putchar('\n'); 
     Sleep(5000); 
    } 

} while (key != 27); 
0

キーをループで2回チェックする理由は何ですか?あなたは1つの小切手でこれを行うことができます。

これはどうですか?

int key; 
char msg[20]; 
printf("\n\n\t\t  press escape to quit\n\n"); 

while(true) { 
    key = _getch(); 
    if(key == ESC) { 
     printf("Key: ESCAPE"); 
     putchar('\n'); 
     break; 
    } 

    printf("Key: %c", key); 
    putchar('\n'); 
    Sleep(5000); 
} 
+0

うん、良いことだけど、同時に2つの関数を同時に実行させることは可能ですか? 1ループはまだ動いています....そして2ループは同時に実行できますか? –

+0

@AdamZbudniewek はい、可能です。同時に2つのループを実行するには、それらを異なるスレッドに配置する必要があります。スレッドを理解するためにここから始めてください。 この質問を確認するhttp://stackoverflow.com/questions/26425836/anyway-to-run-2-loops-at-the-same-time – Gor

関連する問題