本文涉及的某些概念在前文中有所提及,如果有不太清楚的描述,建议参考前文。
本文属于控制台编程第五篇文章,前四篇链接如下。
本文主要介绍控制台的一些附加处理,比如控制台句柄的访问权限、控制台命令别名、控制台的ANSI函数使用注意事项。
一、控制台访问权限
控制台中有效访问权限主要有下面两种
| 值 | 说明 |
|---|---|
| GENERIC_READ(0x80000000L) | 控制台屏幕缓冲的读权限。 |
| GENERIC_WRITE(0x40000000L) | 控制台屏幕缓冲的写权限。 |
使用CreateFile、CreateConsoleScreenBuffer、GetStdHandle函数获得的句柄,默认都是有GENERIC_READ和GENERIC_WRITE权限的。在函数调用时可指定仅有读或者写的权限。
在调用函数CreateFile、CreateConsoleScreenBuffer时可指定控制台屏幕缓冲句柄的访问权限控制(安全性控制),详细内容可参考
二、控制台别名
别名的作用主要是将源字符串替换为目标字符串,例如预先在控制台中定义“abc”到“cd <a-long_patch>\abc”的别名,在控制台中输入"abc",控制台会自动将“abc”扩展为“cd <a-long_patch>\abc”的形式。并执行cd操作。
定义控制台别名可使用Doskey或者AddConsoleAlias函数。
如下面代码的使用方式:
// using Doskey.exe: doskey abc=cd \a_very_long_path\test // using AddConsoleAlias AddConsoleAlias( TEXT("abc"), TEXT("cd \\<a_very_long_path>\\test"), TEXT("cmd.exe"));