Windows控制台下输入输出控制

来源:互联网 发布:golang 1.8.3 编辑:程序博客网 时间:2024/06/10 03:22

Windows控制台下输入输出控制


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

AD:

以前老是用标准的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控制台光标控制
0 0
原创粉丝点击