1

CTRL+Cバッファーに格納されているものを受け取り、それを char 配列または文字列にコピーする、c++ を使用した単純な windows32 コンソール アプリケーションを作成したいと考えています。

CTRL例: "Hello" という単語を選択し、 +を押すCと、プログラムは "Hello" という単語 (バッファーに格納されている) を char 配列に入れます。

4

1 に答える 1

0

1 つの問題は、他のほとんどの組み合わせCTRL-Cのように通常のキーストロークとして送信されないことです。これは、ブレーク信号であり、特別なブレーク信号をアプリケーションに送信するためにコンソールによって特別に処理されるためです。アプリケーションがそれを処理しない場合は、終了します。もう 1 つの問題は、コンソールからの入力が通常は行ベースであり、ユーザーが改行またはキーを押して初めて入力が得られることです。CTRL-keyCTRL-CEnter

最初の問題の可能な解決策は、関数を使用しSetConsoleCtrlHandlerてハンドラー関数を設定してシグナルをキャッチし、ハンドラーでアプリケーションCTRL-Cに押されたことを伝えることです。

両方の問題の解決策は、コンソール モードを not processに変更しCTRL-C、ライン ベースの入力を無効にすることです。

CTRL-Cまた、通常は、選択したコンテンツクリップボードからではなく、クリップボードにコピーするために使用されることに注意してくださいCTRL-V


ただし、キーストロークの処理は問題のほんの一部にすぎません。実際にコピーして貼り付けるためにクリップボードを操作する必要があるためです。

于 2014-05-25T14:15:48.457 に答える