0

我是 C++ 新手,刚刚了解了钩子,所以我有一个 C++ 程序,它在 KeyEvent 发生时运行一个函数:

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”应用程序(这会更改一些链接器选项),并提供WinMain入口点而不是 main。这样就不会有控制台窗口。

于 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 回答