1. 程式人生 > >C#基礎視頻教程5.2 如何編寫簡單的超級熱鍵

C#基礎視頻教程5.2 如何編寫簡單的超級熱鍵

用戶 之前 需要 設置 http ams 直接 定義 分享

我們前面已經理解了如何使用官方的代碼實現鼠標鍵盤的監控,其實還差一點,因為他的代碼只能捕捉單個的按鍵,而其實我們要的是組合鍵。什麽是組合鍵呢?比如我想定義同時按下WIN+C是去執行屏幕截圖。這只要理解為WIN鍵按下且沒有彈起,C鍵也被按下,然後去執行一個EXE程序即可。

?

我們需要寫一個類把之前的封裝起來

技術分享

?

這樣就比較簡潔,初始化和添加綁定都只用了一行(+=就是添加綁定,讀者也可以測試多次+=的效果,-=就是取消綁定,這樣做可以讓主程序顯得比較幹凈)

技術分享

?

我們來思考一下如何實現捕捉一組按鍵,比如WIN鍵是第一個觸發熱鍵,C是第二個觸發熱鍵,觸發之後執行CaptureScreen(屏幕截屏),如果D是第二個觸發熱鍵,就執行DrawScreen(屏幕繪圖),所以很明顯第一步是寫一個觸發的方法,如果HotKeyMain成立,再看第二個按鍵是否成立,如果都成立則執行指定的功能

技術分享

?

初始化的時候,我們已經指定了HotKeyMain是LWin,HotKeySub是A-Z的26個字母(我們暫時不考慮更為復雜的情況,比如F1-F12的按鈕,比如Tab,特殊符號作為熱鍵的觸發按鈕)

技術分享

?

檢測到WIN鍵松開之後,第一個布爾值已經是false,就不會再觸發任何功能了(當然這是我初步設想的邏輯方式,讀者可以思考有沒有更合理的方式,我們在下面一個部分會把這些放到Form1的內容移植到新的自定義類裏面,把程序的表現層和業務層分開,方便我們擴展自己的類庫)

技術分享

?

具體到執行層面,我們只需要調用windows自帶的process類即可(把三個EXE文件放在debug目錄下),至於這三個EXE怎麽來的就先不要管了(網上有很多,比如CaptureScreen這個EXE截圖工具是搜狗截圖自帶的,我們直接拿過來用即可),因為最後我生成的EXE程序也是Debug目錄打包即可,所以這裏為了方便直接放到同目錄下即可,process.StartInfo.FileName不需要跟詳細路徑

技術分享

?

為了讓用戶可以自定義快捷鍵,我們還可以把字母的組合做成文件讀寫的方式(可以載入文件,也可以寫入文件),最常見的文件讀寫方式肯定是TXT文件(我也提供了INI文件的讀寫類,後面會講讀寫EXCEL,讀寫數據之類的,先掌握最簡單的)。首先我們測試寫入文件的方法,這裏我們又新增了兩個類,一個是FunctionSystem(獲取系統常用的目錄),一個是FunctionFileTXT(執行TXT文件的讀寫),這些功能都可以百度輕松找到,我們只是為了說明整合成自己的類的好處,可以直接調用

技術分享

?

這裏暫時不詳細講解讀寫文件的註意事項,有很多模式,很多參數,但是其實我們只會需要考慮幾種常用的(追加的方式或者重寫的方式),這裏我們只是寫入了三行快捷鍵對應的信息

技術分享

?

而獲取系統文件夾的功能FunctionSystem我們也會在後面繼續擴展(因為除了快速的定位到常用的目錄比如Programs Files文件夾,Windows文件夾,程序的目錄,這個類還應該有很多其他功能,我們後面會擴展)

技術分享

?

寫入文件實現之後,接下來就考慮讀取(為什麽是XXX|C,XXX|D呢?這個是我們自己定義的,因為格式是自己設置的,你中間的分割符號也可以用空格或者其他字符,或者你也可以不用我這種一行對應一條參數的方式),我接下來就是要自己讀取並解析剛才寫入的文件(要仔細體會文件的讀取和寫入過程,並不在於讀寫的具體代碼,因為網上可以找到很多照抄就行了,而是為什麽讀寫成這樣,如何以最簡單的格式保存變量)

技術分享

?

有了讀寫之後,重置就很簡單了,就是寫入默認的參數而已(可以直接復制一份寫入,把原來的變量該成常量即可)

技術分享

?

讀取文件的時候我們還引入了字符串的解析(只是把字符串按照某個字符提取到字符串數組或直接轉成浮點數組),這個也是暫時不需要完全掌握,簡單的有轉義字符,復雜的有正則表達式,都是夠學一個禮拜的,但是大部分情況下只要能找到,能拿別人的用就可以了,我們後續會接著完善這個FunctionString這個類(先是對整個配置文件按\n提取到行,再對每一行按|拆分成字符串,提取每一行的|之後的那個字符串),其實還有很多工作可以做,比如程序剛載入的時候讀取參數,比如對用戶輸入的自定義參數做限制,防止非法輸入等等,我們將在下面一部分介紹。

技術分享

?

?

更多教學視頻和資料下載,歡迎關註以下信息:

我的優酷空間:

http://i.youku.com/acetaohai123

技術分享

?

我的在線論壇:

http://csrobot.gz01.bdysite.com/

技術分享

?

問題交流:

QQ:910358960

郵箱:[email protected]

?

?

?

C#基礎視頻教程5.2 如何編寫簡單的超級熱鍵