我在 AllocConsole
上阅读了MSDN文档,我不明白一个词是指其目的。在一个非常小的DLL教程中,他将DLL附加到一个简单的控制台应用程序,在DLL中,调用 AllocConsole
。当我从DLL代码中删除它时,运行时没有任何变化。所以我很好奇它的主要目的:
case DLL_PROCESS_ATTACH:
 AllocConsole();
 printf(“\ n注入成功!“);
 msgBox(true);
 break;



 这在运行时没有区别当我删除AllocConsole时。

答案 0 :(得分:1)
AllocConsole的MSDN文档说:
进程只能与一个控制台关联,因此AllocConsole 如果调用进程已有控制台,则函数失败。一个过程 可以使用FreeConsole函数将其自身与当前分离 控制台,然后它可以调用AllocConsole来创建一个新的控制台或 AttachConsole连接到另一个控制台。
所以,如果进程没有控制台但你希望它有一个控制台,请调用它。您可以执行此操作的常见示例是在Windows(GUI)应用程序中,该应用程序不会自动创建和显示控制台。 (与控制台应用程序不同,它使AllocConsole变得毫无用处。)