突破SBO屏蔽限制,自由實現快捷鍵自定義

這個標題很聳動?的確是這樣,不知出於什麼樣的考慮,SBO齷齪的屏蔽了所有的功能鍵,包括F1-F12、上下左右箭頭鍵、HOME鍵、END鍵、PAGEDOWN鍵、PAGEUP鍵、CTRL鍵、ALT鍵等等--可能是因爲它自己定義了一些這樣的按鍵作爲快捷方式吧。
 
但是用戶可不是那麼好說話!一個基於SBO的項目中,用戶竟然一定要堅持在車間業務中使用功能鍵以期達到只要通過鍵盤就能夠實現業務操作。我以SBO屏蔽了功能按鍵爲由,希望用戶能夠不堅持需要的這些需求,的確SBO甚至在UI開發中都屏蔽了這些功能。但是用戶卻一定要求這樣的解決方式!該死的需求,該死的SBO!
 
於是潛心鑽研,終於兩天之後的今天,完成了這一需求--完全突破了SBO的限制,在SBO 中自由使用所有的系統按鍵--就是說,全部接管了所有的功能鍵。如果我願意,SBO要實現固有的系統功能快捷方式,必須向我借閱。
 
一、實現效果
 
先看看實現的界面吧。在沒有打開SBO的窗體時,SBO其實已經打開了幾個非視化窗體,比如F_4,這個時候,我們要能夠捕捉到按鍵。嗯,是的,我們捕捉到了--
鍦⊿BO鏃犵晫闈㈡椂鎹曟崏鍒癋5鎸夐敭
 
對,這是無窗體情況下捕捉到了操作人員按下的F5按鍵。那麼其它按鍵呢?請看--
 
無窗體情況下捕捉到了操作人員同時按下的CTRL鍵和P鍵。
 
上述兩種方式的實現,其意義在於可以通過快捷方式自定義打開任意的一個當前有效的SBO業務功能,當然也包括所有的第三方增強模塊的業務實現。
 
那麼在業務界面中呢?當然是可以實現的。如下圖:
 
至於在系統業務界面中的實現也是類似的效果,這種界面就不在此顯示了。
 
二、實現技術
 
OK,效果看到了。那麼怎麼實現的呢?
 
深入瞭解Windows平臺下的開發人員肯定已經知道了我們是怎麼實現的了。對,通過HOOK方式來實現,在富盛SBO程序開發框架中,我們加入了啓動底層功能監聽的部分功能:比如包括監聽MOUSE和鍵盤,當然也可以監聽網絡信息。富盛SBO程序開發框架啓動了底層設備HOOK之後,並要求對監聽HOOK進行必要的配置。這是應該的,否則將可能導致系統監聽成本的加劇,所以,一個成熟的程序應該對監聽內容進行過濾。
 
富盛SBO程序開發框架提供以下幾種監聽過濾方式:
1、監聽宿主過濾器。指定對那些進程進行監聽,以及監聽到的信息應該提交給誰。
2、監聽對象過濾器。監聽對象包括鼠標、鍵盤,目前還沒有開放網絡信息的監聽。
3、監聽事件過濾器。監聽哪些對象,以按鍵監聽爲例:是否單獨監聽F1-F12等系統按鍵;是否單獨監聽CTRL、ALT、SHIFT功能;可打印字符鍵是否必須同CTRL、ALT、和SHIFT按鍵搭配使用才允許被監聽等。
 
富盛SBO程序開發框架的按鍵監聽程序還有一項非常重要的功能,就是監聽對象被捕獲程序處理之後,是否還允許其它程序處理本對象。是的,如果不予其它程序共享,SBO也就只能乖乖的聽命於我們,這些按鍵也就乖乖的舉起手來聽從我們的指揮了。SBO要使用這些按鍵,只能像咱們求助了。
 
其實這只是接管SBO系統按鍵的第一步,這還沒有算完。
 
按鍵被捕捉到了,傳遞給我們的程序處理--在此,以富盛SBO程序開發框架爲例。因爲,富盛SBO程序開發框架採用的是集中調度、分佈分發的體系結構,所以按鍵監聽程序將監聽信息傳遞給富盛SBO程序開發框架之後,由框架進行綜合調度,調度的原則是:
 
1、活動窗體是否是基於富盛SBO程序開發框架的窗體,進入到富盛SBO程序開發框架程序進行處理;
 
這個時候可以在用戶窗體上進行相關的業務處理,比如POS處理等。
 
2、活動窗體是否是SBO系統窗體,由基於富盛SBO程序開發框架的系統窗體監視程序負責處理;
 
這個時候可以在自己開發的擴展程序來處理系統窗體上進行相關的業務處理,比如銷售訂單處理等。
 
3、既無用戶窗體業務SBO系統窗體,那麼富盛SBO程序開發框架啓動SBO應用框架監視程序。
 
這個功能前面已經講過,在於接管SBO的系統功能或者擴展功能的快捷方式。
 
三、功能擴展
 
按鍵被捕捉到了,也通過程序考發框架傳到指定的窗體,剩下的就是具體的業務實現了。
 
怎麼做?程序員都知道了!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章