我有一个控制台,它打开一个窗口。我如何使用我从窗体上的控件获取的值来写入此控制台?例如,如文本字段?C++:写入一个打开表格的控制台
回答
要在Windows下访问控制台,必须将程序作为控制台应用程序链接。在Visual C++中,您可以在配置属性/连接器/系统/子系统=控制台下的项目设置中进行配置。
将您的应用程序链接为concole应用程序而不是表示您无法打开窗口。它只是意味着a)你的过程总是有一个控制台窗口,b)例如cmd.exe会同步执行它(=等待它完成后再继续脚本/再次显示提示)。
然后你就可以访问控制台通常的方式:使用std::cout
,printf
等
AFAIK有没有(好易)的方式来获得访问应用程序从,启动控制台如果应用程序链接作为一个窗口应用程序。 (但是你可以分配一个新的控制台,但我认为这不是你想要的)。
编辑:如果你想打印一些信息到控制台,即使输出已被重定向,我建议你使用std::cerr
打印到“错误输出”。 “错误输出”也默认为控制台,但它与“stdout”不同,并且通常不会重定向。它可以被重定向,但我认为给用户这个选项是一件好事,而不是通过直接打印到控制台来解决任何重定向问题。当我需要一个“双模式”应用程序,即一个可以使用GUI或命令提示符运行的应用程序时,我使用控制台应用程序,并调用FreeConsole()来摆脱控制台窗口如果通过命令行参数选择了GUI版本(例如通过不传递任何参数)。如果应用程序在GUI模式下启动(例如,通过在资源管理器中双击),那么控制台的这种方式仍会短暂弹出,但它会立即关闭,因此在GUI使用时不会使屏幕混乱。
有'AttachConsole',但它具有不阻挡大多数shell的不良副作用,所以您的进程的输出将与父级混合。 – 2011-04-05 01:16:40
好吧,我改变了我的帖子,说“没有(好,简单)的方式来访问控制台......”:)顺便说一句:如何得到AttachConsole的正确进程ID?如果我理解正确,就必须获得shell的进程ID,即当前进程的父进程ID。 – 2011-04-05 01:24:23
使用'ATTACH_PARENT_PROCESS'标志,在[AttachConsole文档](http:// msdn.microsoft.com/en-us/library/ms681952.aspx) – 2011-04-05 01:42:35
默认情况下,Windows控制台应用程序已连接到控制台stdout
。如果没有(例如,I/O被shell重定向),则可以打开特殊文件名"CONOUT$"
。
所以我可以使用fprintf并使用CONOUT $作为文件名? – 2011-04-05 00:35:55
@Alex:是的,你可以'打开(“CONOUT $”,“W”)'然后'fprintf'。 – 2011-04-05 01:17:13
- 1. C# - 写入一个新的控制台窗口
- 2. Eclipse RCP写入控制台开销
- 3. C#打开/关闭控制台输出
- 4. C从控制台打开文件
- 5. 从C代码打开Linux控制台
- 6. Windows应用程序打开控制台并在其中写入
- 7. 统一打开控制台/终端并向其输出读取输入/写入
- 8. 向控制台打印大型表格
- 9. C#控制一个控制台进程
- 10. 打开第二个Python控制台
- 11. Spark列 - 写入控制台
- 12. 同步写入控制台
- 13. Eclipse写入控制台
- 14. 写入导轨控制台
- 15. 将JSON写入控制台
- 16. C++打印→Windows控制台
- 17. 如何打开Visual C++控制台应用程序的新控制台窗口?
- 18. 用C#中的每个新线程打开一个新控制台?
- 19. 从控制台获取输入到一个表格
- 20. 打开控制台,并下达命令,从shell脚本打开控制台
- 21. 写一个表格(双打)到二进制文件IO C++
- 22. C#控制台格式化
- 23. 从C++的控制台输入一个大的输入
- 24. 打开新的控制台运行另一个Javascript文件
- 25. 子控制台和写入控制台值的时间步骤
- 26. Pi 3上的Python打开并控制一个控制台应用程序
- 27. 程序在此控制台中写入时在控制台中写入
- 28. 从C#DLL打开控制台并使用它打印输出
- 29. 控制台写
- 30. 以表格格式打印控制台列表
你用'/ clr'编译?使用'C++ - cli'标签。 – 2011-04-05 00:31:22