0

私は C++ を初めて使用し、フックについて学習したばかりなので、KeyEvent が発生したときに関数を実行する C++ プログラムがあります。

LRESULT WINAPI KeyEvent(int nCode, WPARAM wParam, LPARAM lParam)
{  
  //Do C++ stuff
}

これは今のところ私の唯一のフックです。

ただし、コードの実行時にポップアップするコマンド プロンプトを非表示にしたいと考えています。

このスニペットを使用して非表示にできると言われました。

HWND Stealth;
AllocConsole();
Stealth = FindWindowA("ConsoleWindowClass", NULL);
ShowWindow(Stealth,0);  

ただし、フックに配置すると、キーが押されるまでプロンプトが非表示になり(理想的ではありません)、フックの上(プログラムの上部近く)に配置するとエラーが発生します...

私の質問は、プログラムの実行後にコマンドプロンプトを非表示にするためにスニペットを配置できる他のタイプのフックはありますか? -または、私のスニペットのように、使用できるコマンド プロンプトを非表示にする他の方法はありますか?

どうもありがとう。

4

2 に答える 2

2

プロジェクト設定を変更して「GUI」アプリケーションをビルドし (これにより、いくつかのリンカー オプションが変更されます)、 main の代わりにWinMainエントリ ポイントを提供します。そうすれば、コンソール ウィンドウは表示されなくなります。

于 2012-09-30T16:10:55.187 に答える
0

いつでも WM_CREATE メッセージを使用して、必要なことを行うことができます。そしてその中で呼び出します:

if(MSG == WM_CREATE)
  ShowWindow( GetConsoleWindow(), SW_HIDE );

コンソールが再び必要な場合は、SW_HIDE を SW_SHOW に変更してください。

通常、メッセージ タイプには switch ステートメントを使用します。

于 2012-09-30T20:31:48.603 に答える