在linux系统如何获得窗口句柄,编写控制台程序,获得标准输入输出的窗口句柄...
1. 編寫控制臺程序,獲得標(biāo)準(zhǔn)輸入輸出的窗口句柄
GetStdHandle
函數(shù)聲明如下 :
HANDLE GetStdHandle(
DWORD nStdHandle
);
GetStdHandle()返回標(biāo)準(zhǔn)的輸入、輸出或錯誤的設(shè)備的句柄,也就是獲得輸入、輸出 /錯誤的屏幕緩沖區(qū)的句柄。
其參數(shù)nStdHandle的值為下面幾種類型的一種:
值 含義
STD_INPUT_HANDLE 標(biāo)準(zhǔn)輸入的句柄
STD_OUTPUT_HANDLE 標(biāo)準(zhǔn)輸出的句柄
STD_ERROR_HANDLE 標(biāo)準(zhǔn)錯誤的句柄
2. SetConsoleTextAttribute是API設(shè)置控制臺字體顏色和背景色的函數(shù)。廣泛應(yīng)用于電腦編程
BOOL SetConsoleTextAttribute(
HANDLE hConsoleOutput,? // 使用GetStdHandle取得的句柄
WORD wAttributes??????? // 設(shè)置文本、背景色
);
wAttributes可以取下面的值
FOREGROUND_BLUE???? ??? ??? ?Text color contains blue.
FOREGROUND_GREEN??? ??? ??? ?Text color contains green.
FOREGROUND_RED????? ??? ??? ?Text color contains red.
FOREGROUND_INTENSITY ?? ??? ?Text color is intensified.
BACKGROUND_BLUE???? ??? ??? ?Background color contains blue.
BACKGROUND_GREEN??? ??? ??? ?Background color contains green.
BACKGROUND_RED????? ??? ??? ?Background color contains red.
BACKGROUND_INTENSITY ?? ??? ?Background color is intensified.
COMMON_LVB_LEADING_BYTE ?? ?Leading byte.
COMMON_LVB_TRAILING_BYTE ?? ?Trailing byte.
COMMON_LVB_GRID_HORIZONTAL ?? ?Top horizontal.
COMMON_LVB_GRID_LVERTICAL ?? ?Left vertical.
COMMON_LVB_GRID_RVERTICAL ?? ?Right vertical.
COMMON_LVB_REVERSE_VIDEO ?? ?Reverse foreground and background attributes.
COMMON_LVB_UNDERSCORE ?? ??? ?Underscore.
3. CONSOLE_CURSOR_INFO用于存放控制光標(biāo)信息
typedef struct _CONSOLE_CURSOR_INFO {
DWORD? dwSize;
BOOL?? bVisible;
} CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
dwSize:光標(biāo)大小,1-100的值
bVisible:光標(biāo)是否可見
4. SetConsoleCursorInfo設(shè)置光標(biāo)的信息
BOOL SetConsoleCursorInfo(
HANDLE hConsoleOutput,???????????????????????? // 使用GetStdHandle取得的句柄
CONST CONSOLE_CURSOR_INFO *lpConsoleCursorInfo // 光標(biāo)信息
);
5. _CONSOLE_SCREEN_BUFFER_INFO: contains information about a console screen buffer
typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
COORD????? dwSize; ?? ??? ??? ??? ?// Size, in character columns and rows, of the screen buffer.
COORD????? dwCursorPosition;?? ??? ??? ?// 當(dāng)前光標(biāo)在屏幕的位置
WORD?????? wAttributes; ?? ??? ??? ?// 控制臺相當(dāng)于顯示屏的坐標(biāo),左上和右下的坐標(biāo)
SMALL_RECT srWindow; ?? ??? ??? ??? ?// 字符背景屬性,同SetConsoleTextAttribute
COORD????? dwMaximumWindowSize; ?? ??? ?// 控制臺窗口的大小
} CONSOLE_SCREEN_BUFFER_INFO ;
6. GetConsoleScreenBufferInfo取得控制臺屏幕信息
BOOL GetConsoleScreenBufferInfo(
HANDLE hConsoleOutput,??????????????????????????????? // GetStdHandle取得的句柄
PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo // screen buffer information
);
7. SetConsoleCursorPosition設(shè)置光標(biāo)位置
BOOL SetConsoleCursorPosition(
HANDLE hConsoleOutput,? // handle to screen buffer
COORD dwCursorPosition? // new cursor coordinates
);
8. WriteConsoleOutput直接寫輸入緩沖區(qū)??梢詫懭腈I盤、鼠標(biāo)等任何Console能夠接收的事件(Event)都可以寫進(jìn)去。鍵盤操作如果是一些可顯示字符可以直接寫 ASCII字符,否則的話可能要用鍵盤掃描碼(scan code)了
BOOL WriteConsoleOutput(
HANDLE hConsoleOutput,????? // handle to screen buffer
CONST CHAR_INFO *lpBuffer,? // data buffer
COORD dwBufferSize,???????? // size of data buffer
COORD dwBufferCoord,??????? // cell coordinates
PSMALL_RECT lpWriteRegion?? // rectangle to write
);
9. SetConsoleTitle設(shè)置控制臺的標(biāo)題
BOOL SetConsoleTitle(
LPCTSTR lpConsoleTitle?? // new console title
);
來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/518171/viewspace-677906/,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任。
總結(jié)
以上是生活随笔為你收集整理的在linux系统如何获得窗口句柄,编写控制台程序,获得标准输入输出的窗口句柄...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【观察】打造产业数字引擎背后,紫光云价值
- 下一篇: linux命令 查看分辨率,Linux