本文涉及的某些概念在前文中有所提及,如果有不太清楚的描述,建议参考前文。

本文属于控制台编程第五篇文章,前四篇链接如下。

本文主要介绍控制台的一些附加处理,比如控制台句柄的访问权限、控制台命令别名、控制台的ANSI函数使用注意事项。

一、控制台访问权限

 控制台中有效访问权限主要有下面两种

说明
GENERIC_READ(0x80000000L) 控制台屏幕缓冲的读权限。
GENERIC_WRITE(0x40000000L) 控制台屏幕缓冲的写权限。

使用CreateFileCreateConsoleScreenBufferGetStdHandle函数获得的句柄,默认都是有GENERIC_READGENERIC_WRITE权限的。在函数调用时可指定仅有读或者写的权限。

在调用函数CreateFileCreateConsoleScreenBuffer时可指定控制台屏幕缓冲句柄的访问权限控制(安全性控制),详细内容可参考

Access Control Model

二、控制台别名

别名的作用主要是将源字符串替换为目标字符串,例如预先在控制台中定义“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"));
View Code

相关文章: