2010-05-11 40 views
1
  • 我們已經給了一個小項目(作爲我的操作系統課程的一部分)來製作修改鍵盤輸入的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編譯器。)

+0

爲什麼人們仍然在使用Turbo C?它比Borland C++早,而且是一箇舊的編譯器! – 2010-05-11 20:15:30

+0

僅限於教育原因,先生:) – Rockr90 2010-05-11 20:22:33

+0

哎呀,我還是很驚訝,你知道任何有關DOS編程。 – jmucchiello 2010-05-12 17:59:04

回答

1

你打算如何儘快畢業?希望你有時間,Windows不再以這種方式工作。您需要使用WDK編寫鍵盤過濾器驅動程序。它在src \ input \ kbfiltr目錄中提供了一個示例實現。你不能使用你熟悉的工具,WDK包含一個編譯器和一個內核調試器。免費提供,go here即可開始使用。

+0

您是否向一個甚至沒有看到win32 API的初學者建議使用內核編程?這不是斯巴達,這只是瘋狂! 在我看來,他應該從SDK開始,用鉤子來實現整個事情;至少,他不會嘗試太多的傷害。 @ rockr90:我並不是絕對的說你不是一個好的編碼人員,而只是說內核開發是爲有經驗的Windows開發人員開發的。從KD開始只是對自己造成傷害(也可能對個人電腦:))。 – 2010-05-11 21:48:26

+0

我*非常*深刻地記得是OP的年齡,不知道什麼是不可能的。這個標籤裏太多老人了。增長下來。 – 2010-05-11 22:02:19

+0

@Matteo:我明白了你的想法,並且我完全理解你的意思,我希望逐漸向沒有必要知識的事物發展。 @Hans:我仍然在第二年,所以我認爲我有時間;) 如果有人能夠給我提供一些關於Windows Hook Api或者任何可用書籍的很好的教程,那就太棒了。 謝謝。 – Rockr90 2010-05-11 23:19:09

相關問題