AllocConsole问题

时间:2016-06-10 12:20:34

标签: c++ windows

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




  case DLL_PROCESS_ATTACH:
 AllocConsole();
 printf(“\ n注入成功!“);
 msgBox(true);
 break;
  




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




1 个答案:

答案 0 :(得分:1)

AllocConsole的MSDN文档说:

  

进程只能与一个控制台关联,因此AllocConsole   如果调用进程已有控制台,则函数失败。一个过程   可以使用FreeConsole函数将其自身与当前分离   控制台,然后它可以调用AllocConsole来创建一个新的控制台或   AttachConsole连接到另一个控制台。

所以,如果进程没有控制台但你希望它有一个控制台,请调用它。您可以执行此操作的常见示例是在Windows(GUI)应用程序中,该应用程序不会自动创建和显示控制台。 (与控制台应用程序不同,它使AllocConsole变得毫无用处。)