|
setConsoleMode() 函数用来设置控制台属性。默认情况下,控制台是输入回车后就马上回显的,它并不会给出一个提示信息给你并等待你输入数据后回车确认。在 linux shell 里,可以使用 read 命令等待接收用户的输入;在这里我们同样可以使用 setConsoleMode() 函数来设置控制台的一些属性,使之达到类似功能。
setConsoleMode() 函数原型如下:BOOL WINAPI SetConsoleMode(
__in HANDLE hConsoleHandle,
__in DWORD dwMode
); 它的返回值是个 BOOL 型,当函数成功时返回 TRUE 。
第 1 个参数 hConsoleHandle 是一个控制台句柄,用来标识控制台输入或屏幕缓冲区,比如可以用 CreateFile() 函数来获取标准输入的句柄,然后将得到的句柄填入这个参数中,这个句柄必须有 GENERIC_READ 的访问权限。
第 2 个参数 dwMode 指定字符的处理方法,它有多个标志可供选择,这些标志用于决定控制台输入还是输出。这里有 5 个常用标志:
1. ENABLE_ECHO_INPUT
在且仅在 ENABLE_LINE_INPUT 选项使能的情况下,该选项可用。此时用 ReadFile() 或 ReadConsole() 函数进行读操作时,被读取的字符是放在屏幕缓冲区中的。在用户输入内容时,内容也会在屏幕上显示出来;如果是输入密码一类的内容,可以禁止该选项,这样输入的密码就不会打印在屏幕上,比如用 ssh 连接 linux 时,你输入的密码是不会显示出来的。
2. ENABLE_LINE_INPUT
指定 ReadConsole() 在遇到回车字符时返回。当使用 ReadConsole() 读取控时,如果用户还没按下回车确认自己的输入内容完毕,函数不会返回。
3. ENABLE_PROCESSED_INPUT
处理退格,回车以及换行符。
4. ENABLE_PROCESSED_OUTPUT
处理退格、制表符、响铃、回车及换行。
5. ENABLE_WRAP_AT_EOL_OUTPUT
启用正常输出和回显输出的自动换行功能。也就是说,当光标到达命令行窗口边界时会自动切换到下一行,在整个命令行窗口满时,会自动下滚输出内容。
示例:http://www.groad.net/bbs/read.php?tid-4657.html |
|