weitom1982

向各位技术前辈学习,学习再学习.
posts - 299, comments - 79, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

程序控制台的建立

Posted on 2006-03-20 23:31 高山流水 阅读(217) 评论(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 笨笨 阅读(268) 评论(5)  编辑 收藏收藏至365Key

Feedback

# 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控制台就不行了  回复
只有注册用户登录后才能发表评论。