Dict.CN 在线词典, 英语学习, 在线翻译
随笔-98  评论-327  文章-0  trackbacks-0

经常看到一些程序在运行的时候有一个WINDOWS控制台,感觉非常COOL。实际上有的时候帮助你监视系统运行是很方便的,那么怎么样创建一个控制台呢?

实际上WINDOWS为你提供了一系列的API来完成这个功能,例如:ReadConsole,WriteConsole等,具体参见MSDN。

下面我们用一段代码来说明如何创建Console.

1。首先调用AllocConsole函数来为你进程创建一个Console,该API是将当前进程Attache到一个新创建的Console上。你还可以通过调用SetConsoleTitle(tstrName);来设置Console的Title.

2。使用WriteConsoleOutput来将信息输出到Console上;在输出之前,先要得到Console的HANDLE,这通过GetStdHandle(STD_OUTPUT_HANDLE)来得到,然后将信息组织成Console的格式,然后输出。

3。关闭CONSOLE。当不需要这个CONSOLE的时候,调用FreeConsole来将当前进程从Console中Detach中。

4。通过创建一个进程来为监视你的CONSOLE输入和输出;你可以创建一个线程然后来,在线程中取得标准输入和输出CONSOLE的HANDLE,然后循环监视其事件,再对不同的事件进行处理。

详细代码参见:http://blog.csdn.net/windcsn/archive/2005/11/27/537737.aspx

posted on 2005-11-27 15:49 笨笨 阅读(1601) 评论(8)  编辑 收藏 引用

评论:
# re: 为你的程序创建一个控制台 2005-11-28 01:22 | eXile
你说的是在GUI程序中使用控制台吧, 对于VC, 其实有一个简单的方法:
在选项 Post-builder step 里新建command, 输入:
editbin /SUBSYSTEM:CONSOLE $(OUTDIR)\filename.exe
(其中 filename 为可执行文件名)
则可以使用 printf 或者 std::cout 在控制台中输出了.  回复  更多评论
  
# re: 为你的程序创建一个控制台 2005-11-28 13:15 | 小明
最好能重定向cout,cerr到文件中去
SDL就是这样做的  回复  更多评论
  
# re: 为你的程序创建一个控制台 2005-11-28 21:23 | 笨笨
To eXile:可以吗?我怎么不成功  回复  更多评论
  
# re: 为你的程序创建一个控制台 2005-11-30 17:43 | eXile
没有理由啊! 估计是你拼写错误.

在 Project | Setting...中设置, 如果你的可执行文件名为 HelloWorld.exe,
则你新建的 command 就为

editbin   /SUBSYSTEM:CONSOLE   $(OUTDIR)\HelloWorld.exe

如果还不行, 那......只有天知道了.
  回复  更多评论
  
# re: 为你的程序创建一个控制台 2005-12-01 09:37 | 笨笨
是的,实验成功了,上次放错了地方,放到生成后事件中就可以了,但这种情况适合那些只输出的情况,如果需要moniter控制台就不行了  回复  更多评论
  
# re: 为你的程序创建一个控制台 2006-06-23 14:42 | 王瑜
乌拉拉 乌拉拉天要下雨  回复  更多评论
  
# 123456789 2006-07-02 06:41 | 李东
麻豆腐棵仍旧棵耳孔几可人口几国家日光机个热肩胛骨米可靠妈妈年可可可可的可靠麻烦感快乐看法 麻烦飞机后果那么那么妈妈,门口人民地方看来  回复  更多评论
  
# re: 为你的程序创建一个控制台 2006-11-15 12:27 | qzq
VC++ 2005还可用如下修改,为Windows窗体应用程序增加控制台:
工程配置属性->链接器->系统->子系统 选 “控制台”。  回复  更多评论
  

标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航: