Windows控制臺下輸入輸出控制
以前老是用標準的C/C++寫Windows控制臺程序,用的都是標準的庫里面的程序,輸入輸出都特別受限制。感覺就像是在一個無法改變的舞臺上跳舞,但是無論跳得多好,舞臺始終還是老樣子,沒辦法根據(jù)舞蹈來布置。這兩天要弄個控制Console輸入輸出的程序,查了一下MSDN才知道怎么去更加深入地利用這個舞臺。
我們大家都知道Windows API是一套用來控制Windows的各個部件的外觀和行為的一套預(yù)先定義的Windows函數(shù)。用戶的每個動作都會引發(fā)一個或幾個函數(shù)的運行以告訴Windows發(fā)生了什么。
那么此時我們無非就是用幾個API便可搞定:
1.WriteConsoleOutput 這個API從指定的位置開始輸出字符串。需要一個Windows控制臺的HANDLE,可以通過GetStdHandle(STD_OUTPUT_HANDLE);獲得。這樣就能夠隨意控制輸出的格式。
2.ReadConsoleOutputCharact
3.ReadConsoleInput 這個讀取輸入緩沖區(qū)里面的內(nèi)容使用GetStdHandle(STD_INPUT_HANDLE)獲取Console的輸入句柄。通過這個函數(shù)可以對輸入進行更底層的控制。這個函數(shù)的好處在于,它還能獲得對于這個Console的鍵盤和鼠標輸入,也就是相當于窗口程。
4.WriteConsoleInput 這個就比較好玩了,直接寫輸入緩沖區(qū)??梢詫懭腈I盤、鼠標等任何Console能夠接收的時間(Event)都可以寫進去。里面鍵盤操作如果是一些可顯示字符可以直接寫ASCII字符,否則的話可能要用鍵盤掃描碼(scan code)了。我查的MSDN的時候查虛擬碼(Vritual Key Code)好像比較容易。這樣可以用API MapVirtualKey將虛擬碼轉(zhuǎn)成掃描碼,當然這個API也能進行逆向轉(zhuǎn)換。
Windows控制臺還有一些相關(guān)函數(shù),數(shù)量不多,都可以通過相關(guān)查找找到,有了這些函數(shù),寫任何自動操作都沒問題了。
Windows控制臺中的函數(shù)大家只需要查找常用的相關(guān)函數(shù),便于大家方便使用就可以了。希望本文能夠?qū)Υ蠹矣兴鶐椭?/p>
【編輯推薦】