原理:
调用AllocConsole()函数为进程创建一个控制台窗口console,进程Attach到该console上。
相关函数:
AllocConsole(); // 创建console
freopen( "count$", "wr", std::out ); // 重定向stdout输出到console,第一个参数为重定向的读写位置
freopen( "D:/log.txt$", "w", stdout ); //把输出到控制台的信息输出到txt文件中
printf("Hello World!\n"); // 写数据
char ch = getchar(); // 读数据
FreeConsole(); // 释放控制台资源
简单实现:
#include <consoleapi.h>
#include <cstdio>
class runtime_consle {
public:
runtime_consle() {
AllocConsole();
freopen("CONOUT$", "w", stdout);
}
~runtime_consle() {
FreeConsole();
fclose(stdout);
}
};
// console附加到指定程序
创建一个console变量,使变量生命周期与指定程序一致即可完成进程附加。
例如为对话框附加控制台窗口:
创建话框类的成员变量(runtime_consle console;)