【问题标题】:Outputting from a .exe to cmd从 .exe 输出到 cmd
【发布时间】:2014-02-19 09:10:26
【问题描述】:

我正在用 c++ 编写一个小程序,它创建一个 .exe,然后我通过在 cmd 中使用参数调用它来运行它。我希望能够将 .exe 的输出显示到我运行它的 cmd 中。我目前有这个代码,它打开一个新的 cmd 窗口来显示接近但不是我想要的输出。对此的任何帮助都会很棒!谢谢。

AllocConsole();
DWORD NumberOfBytesWritten = 0;
WriteFile( GetStdHandle(STD_OUTPUT_HANDLE), strLog1, lstrlen(strLog1), &NumberOfBytesWritten, 0);

更新: 调用程序时,我还能够在命令窗口中使用dir > log.txt 写入文本文件,有没有办法可以更改它以便将输出定向到控制台窗口?谢谢,

【问题讨论】:

    标签: c++ windows cmd exe std


    【解决方案1】:

    我的通灵调试能力告诉我,您的构建工具配置为在 GUI 而非控制台模式下创建应用程序。

    如果您重新配置构建以生成控制台模式应用程序,则无需调用AllocConsole 或执行任何特殊操作;您将自动被分配到父进程的控制台。

    【讨论】:

    • 你没有错,它是一个成功的应用程序!我会立即将其转换为控制台应用程序,因为我看不出它是一个获胜应用程序的任何理由。似乎是最简单的事情:)
    【解决方案2】:

    你有没有尝试过简单的操作,比如:

    std::cout << "Print me" ;
    

    std::cerr << "Print me too";
    

    ?

    (我希望我理解正确,您希望打印到启动应用程序的同一个控制台)

    【讨论】:

      【解决方案3】:

      这个问题已经被问过:How to output to the console in C++/Windows。这是一个似乎对您有用的答案:https://stackoverflow.com/a/587792/1728537

      【讨论】:

      • 我在发布之前查看了这个线程,从我阅读的内容来看,它需要使用 allocconsole,这会创建一个新的控制台窗口来将消息放在我希望它们出现在它启动的原始窗口中的位置
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多