曲径通幽论坛

标题: setConsoleMode() -- 控制台属性设置函数 [打印本页]

作者: beyes    时间: 2011-9-9 12:47
标题: setConsoleMode() -- 控制台属性设置函数
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




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2