Windows控制台下输入输出控制

运维 系统运维
本文介绍了换一种方式写Windows控制台程序,这样输入输出就可以自由控制,而不是受限制的使用。

以前老是用标准的C/C++写Windows控制台程序,用的都是标准的库里面的程序,输入输出都特别受限制。感觉就像是在一个无法改变的舞台上跳舞,但是无论跳得多好,舞台始终还是老样子,没办法根据舞蹈来布置。这两天要弄个控制Console输入输出的程序,查了一下MSDN才知道怎么去更加深入地利用这个舞台。

我们大家都知道Windows API是一套用来控制Windows的各个部件的外观和行为的一套预先定义的Windows函数。用户的每个动作都会引发一个或几个函数的运行以告诉Windows发生了什么。

那么此时我们无非就是用几个API便可搞定: 

1.WriteConsoleOutput 这个API从指定的位置开始输出字符串。需要一个Windows控制台的HANDLE,可以通过GetStdHandle(STD_OUTPUT_HANDLE);获得。这样就能够随意控制输出的格式。

2.ReadConsoleOutputCharacter 这个API从特定的Windows控制台缓冲区的某个位置开始读取一定数量的字符。这个在理解屏幕上的文字的时候特别有用。

3.ReadConsoleInput 这个读取输入缓冲区里面的内容使用GetStdHandle(STD_INPUT_HANDLE)获取Console的输入句柄。通过这个函数可以对输入进行更底层的控制。这个函数的好处在于,它还能获得对于这个Console的键盘和鼠标输入,也就是相当于窗口程。

4.WriteConsoleInput 这个就比较好玩了,直接写输入缓冲区。可以写入键盘、鼠标等任何Console能够接收的时间(Event)都可以写进去。里面键盘操作如果是一些可显示字符可以直接写ASCII字符,否则的话可能要用键盘扫描码(scan code)了。我查的MSDN的时候查虚拟码(Vritual Key Code)好像比较容易。这样可以用API MapVirtualKey将虚拟码转成扫描码,当然这个API也能进行逆向转换。

Windows控制台还有一些相关函数,数量不多,都可以通过相关查找找到,有了这些函数,写任何自动操作都没问题了。

Windows控制台中的函数大家只需要查找常用的相关函数,便于大家方便使用就可以了。希望本文能够对大家有所帮助。

【编辑推荐】

  1. Windows控制台光标控制
  2. 在Qt中如何写控制台程序
  3. 掌握一些优化和调教IIS控制台的技巧
  4. c#中重定向windows控制台程序的输出信息
  5. MySQL基本操作(控制台)的基本操作步骤
责任编辑:韩亚珊 来源: 博客转载
相关推荐

2011-07-06 15:25:33

Windows控制台

2011-07-11 14:20:19

2011-07-11 10:30:46

2011-07-11 09:57:19

WINDOWS控制台DOS命令

2011-07-11 13:52:45

Windows控制台

2011-07-11 13:43:45

Windows控制台

2011-07-19 15:15:59

故障恢复控制台

2009-04-28 09:51:21

WinForm控制台输出

2011-07-26 18:13:53

控制台

2010-12-21 14:32:43

操作控制台

2011-11-28 09:25:36

Java输入输出

2021-05-07 20:01:23

IO输入输出

2014-08-11 11:12:35

Jansi

2011-07-11 15:52:47

RCWindows

2011-07-19 15:38:15

故障恢复控制台

2011-07-11 14:38:12

Windows XP控制台

2011-07-26 18:00:09

控制台

2009-12-23 10:57:20

nohup命令

2011-08-08 10:55:14

IOS 控制台 Consol

2009-12-17 11:36:55

Ruby输入输出
点赞
收藏

51CTO技术栈公众号