我們已經給了一個小項目(作爲我的操作系統課程的一部分)來製作修改鍵盤輸入的Windows程序,以便將任何小寫字母轉換成大寫字母(不使用大寫鎖定)!所以當你在鍵盤上輸入時,你會看到你正在輸入的內容被轉換成大寫字母!如何從C++程序修改鍵盤中斷(在Windows XP下)?
我已經通過調用geninterrupt()和使用變量_ah,_AL這樣做很容易使用的Turbo C,我不得不使用讀取一個字符:
_ah = 0×07; //讀一個沒有回聲的字符 geninterrupt(0x21); // DOS中斷
然後將它轉變成一個大寫在前字母i必須通過使用以掩蓋第五位:
_AL = _AL & 0xDF; //屏蔽輸入的字符11011111
然後我將使用任何輸出例程顯示字符。現在
,該解決方案將僅在舊的C編譯器DOS下工作。但是我們打算做的是通過在Windows XP下使用任何現代C/C++編譯器來製作一個近似或類似的解決方案!我首先想到的是修改鍵盤ISR,以便屏蔽任何輸入字符的第五位以將其變成大寫!但我不知道如何做到這一點。其次,我想創建一個Win32控制檯程序,以執行相同的解決方案(但可以使用no avail)或製作Windows兼容的解決方案,但我不知道要使用哪些功能! 第三我認爲做一個Windows程序,直接修改ISR以滿足我的需求!我仍然在尋找如何做到這一點!
所以請,如果你能幫我解決這個問題,我將不勝感激!
預先感謝您!
(我使用Windows XP的英特爾X86使用MinGW-GCC編譯器。)
爲什麼人們仍然在使用Turbo C?它比Borland C++早,而且是一箇舊的編譯器! – 2010-05-11 20:15:30
僅限於教育原因,先生:) – Rockr90 2010-05-11 20:22:33
哎呀,我還是很驚訝,你知道任何有關DOS編程。 – jmucchiello 2010-05-12 17:59:04