【发布时间】:2011-08-31 02:09:18
【问题描述】:
当我的 C 应用程序使用这个简单的 WinAPI 代码启动时,我正在尝试隐藏控制台窗口:
#define CONSOLE_NAME "6FD66E14-FF0F-4B94-B8AF-AFE3D42DC399"
void hide_window(void)
{
// Ставим заголовок для консольного окна / Setting window caption
SetConsoleTitle(TEXT(CONSOLE_NAME));
// Находим по заголовку Handle для окна / Searching Handle of the window
HWND hWnd = FindWindow(NULL, TEXT(CONSOLE_NAME));
if (hWnd == 0)
{
ErrorExit(TEXT("FindWindow"));
}
// Скрываем консоль / Hidding console
ShowWindow(hWnd, SW_HIDE);
}
int _tmain(int argc, _TCHAR* argv[])
{
hide_window();
/* other code */
}
如果没有激活防病毒软件,一切正常,但是当 Kaspersky 正在运行并监控系统时,我无法使用上面的代码,因为 hWnd == 0 是 true 并且 GetLastError() = 183 error(“当文件已存在时无法创建文件。”)启动!
问题:我能做什么?我只需要隐藏那个控制台窗口。
请帮帮我。
非常感谢!
PS。使用 Visual Studio 2010 (Visual C++)
【问题讨论】:
-
如果删除控制台不是一个选项,也许你可以尝试 EnumWindows() 看看它是否会在运行防病毒垃圾时给出不同的结果?
标签: c winapi showwindow