DllMain中的AttachConsole:控制台出现并再次立即消失

时间:2013-12-10 08:24:59

标签: visual-studio dll console visual-studio-2010

我正在尝试将控制台附加到Windows下正在运行的c ++(无控制台)程序。由于我无法访问程序的源代码,只能访问为了将插件编写为DLL而暴露的接口,我在我的插件的DllMain中执行此操作。代码看起来像这样(它的灵感来自How can I attach a console to my win app?博客帖子):

int __stdcall DllMain(void *,unsigned, void *){
      AllocConsole();
      AttachConsole(GetCurrentProcessId());
      FILE* retStream;
      freopen_s(&retStream,"CONOUT$","w",stdout);
      if(!retStream) throw std::runtime_error("Stdout redirection failed.");
      freopen_s(&retStream,"CONOUT$","w",stderr);
      if(!retStream) throw std::runtime_error("Stderr redirection failed.");
      return 1;
  }

当主程序被指示加载DLL但在瞬间消失时,窗口出现; DLL没有被卸载,因为它的其他函数被调用。可能是什么问题?如何让控制台保持打开状态?

主程序GUI是使用Qt编写的,但同样,Qt头不是程序界面的一部分。

0 个答案:

没有答案
相关问题