我是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);
但是,如果我将它放在钩子中,它将不会隐藏提示,直到按下一个键(不理想),如果我将它放在钩子上方(靠近程序顶部)我会收到错误...
所以我的问题是,是否还有其他类型的钩子,我可以在程序运行后将片段放入隐藏命令提示符中? - 或者是否有其他方式像我的代码片段隐藏我可以使用的命令提示?
非常感谢。
答案 0 :(得分:2)
更改项目设置以构建“GUI”应用程序(这会更改一些链接器选项),并提供WinMain入口点而不是main。那样就没有控制台窗口了。
答案 1 :(得分:0)
您始终可以使用WM_CREATE消息来执行您想要的操作。在里面打电话:
if(MSG == WM_CREATE)
ShowWindow( GetConsoleWindow(), SW_HIDE );
这可能适合您,如果您再次需要控制台,只需将SW_HIDE更改为SW_SHOW。
通常你会为消息类型使用switch语句。