
常用软件类: |
|杀毒安全 | |联络聊天 | |网络软件 | |多媒体类 | |系统工具 | |图形图像 | |系统工具 | |应用软件 | |行业软件 |
开发设计类: |
|动画制作 | |图像处理 | |3D设计 | |操作系统 | |站长学院 | |网络相关 | |WEB设计 | |数据库类 | |程序开发 |
控制台输出就象dos下的输出,可不是图形界面。象ping/ipconfig/ftp等命令都是这类程序。
回忆过去,在dos下进行文件操作时,常用到“文件把柄”的概念,使用文件把柄操作时,非常方便,操作时,只要知道把柄号就可以,而不用操心文件的位置。dos下,设备也都有自己的专用把柄,这些把柄是:
0000H 标准输入设备 (stdin)
0001H 标准输出设备 (stdout)
0002H 标准错误设备 (stderr)
0003H 标准辅助设备 (stdaux)
0004H 标准打印设备 (stdprn)
stdin和stdout可以被再定向,dos下常用的“输入改向”和“输出改向”就是这个意思。
下面的dos功能调用中将向屏幕输出信息:
mov ah,40h ;写到文件或设备
mov bx,1 ;标准输出设备
lea dx,OutData ;DS:DX->要输出的数据
mov cx,Count ;要输出字符的个数
int 21h ;执行dos功能调用
利用同样的道理,在windows下,也可向屏幕输出信息。这要用到两个Api函数,一个是GetStdHandle,另一个是WriteFile,在Win32 developer’s References中它们是这样定义的:
------------------------------------------------------------
HANDLE GetStdHandle(
DWORD nStdHandle // input, output, or error device
);
The GetStdHandle function returns a handle for the standard input, standard output, or standard error device.
nStdHandle->Specifies the device for which to return the handle. This parameter can have one of the following values:
Value | Meaning
--------------------+---------------------------
STD_INPUT_HANDLE | Standard input handle
STD_OUTPUT_HANDLE | Standard output handle
STD_ERROR_HANDLE | Standard error handle
If the function succeeds, the return value is a handle of the specified device.
------------------------------------------------------------
BOOL WriteFile(
HANDLE hFile, // handle to file to write to
LPCVOID lpBuffer, // pointer to data to write to file
DWORD nNumberOfBytesToWrite, // number of bytes to write
LPDWORD lpNumberOfBytesWritten, // pointer to number of bytes written
LPOVERLAPPED lpOverlapped // pointer to structure needed for overlapped I/O
);
=============================================================