Win32API 標準入出力を扱う GetStdHandle

Win32APIで標準入出力を扱う

使用するAPI

  • GetStdHandle

  • GetStdHandleで指定する値には以下のようなものがある

    STD_INPUT_HANDLE標準入力のハンドルを取得する
    STD_OUTPUT_HANDLE標準出力のハンドルを取得する
    STD_ERROR_HANDLE標準エラー出力のハンドルを取得する

    //標準入力、標準出力、標準エラー出力のハンドルを取得し
    //ReadFileで標準入力からデータを読み込み、標準出力、
    //標準エラー出力にその読み込んだデータを出力する。
    #include <windows.h>
    
    int main()
    {
    	HANDLE hStdout;
    	HANDLE hStdin;
    	HANDLE hStderr;
    	DWORD dwNumberOfBytesToRead;
    	DWORD dwNumberOfBytesToWtritten;
    	char buffer[256];
    	DWORD dwBuffSize = sizeof(buffer)/sizeof(buffer[0]);
    
    	hStdin = GetStdHandle(STD_INPUT_HANDLE);
    	hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    	hStderr = GetStdHandle(STD_ERROR_HANDLE);
    
    
    	//stdin
    	ReadFile(hStdin, 
    		buffer, 
    		dwBuffSize, 
    		&dwNumberOfBytesToRead, 
    		NULL);
    		
    	//stdout
    	WriteFile(hStdout, 
    		buffer, 
    		dwNumberOfBytesToRead, 
    		&dwNumberOfBytesToWtritten, 
    		NULL);
    		
    	//stderr
    	WriteFile(hStderr, 
    		buffer, 
    		dwNumberOfBytesToRead, 
    		&dwNumberOfBytesToWtritten, 
    		NULL);
    
    
    	return 0;
    }