曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 6616|回复: 0
打印 上一主题 下一主题

setConsoleMode() -- 控制台属性设置函数

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2011-9-9 12:47:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 14:07 , Processed in 0.062135 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表