LingosHook:Plugins
LingosHook最近的版本發布有五個多月了,下載量也超過2500了~看來Lingoes真的很流行,單詞本真的很需要啊。。。
從目前得到的反饋情況看,有一半多的都是增強功能。如果把這些功能一一加到LingosHook中,總感覺會使其變得臃腫,甚至可能就偏離了作為單詞本的主線了。但有些功能確實可以很有用的,比如單詞的導出,等等。
既要添加功能,又不能影響原有的框架,想來想去,總沒有個好的方案。幾天前LP收拾書柜時忽然問我--“Delphi你還會嗎?”接過兩本厚厚的《Delphi5 開發指南》,突然就想起十年前曾用Delphi開發的CBE(Cell Broadcast Equipment,不知道是否有人記得這個。。)程序來,那其中用到的‘Plugins’方法應該可以解決這個問題。
這個‘Plugins’--看著和說著都很好聽,當然了,當時確實也很得意。實際說起來原理很簡單,就是動態加載DLL,利用DLL封裝所需功能。不過現在想想,那時自己還真的很有想象力啊,因為當時只是聽說過‘Plugins’技術,從來不知道該怎么做,總覺得應該是個非常非常高深的技術,都沒敢去研究過。自己把這種DLL叫做‘Plugins’,也只是‘趕潮流’,傍個好聽的名字便于去吹牛而已,沒想后來發現這還真是一種Plugins的實現方式,非常地驚訝。。。
當然了,自己的這個‘Plugins’實際就是簡單的DLL調用,原理很簡單--定義幾個標準接口,作為‘Plugins’的DLL實現這些接口,然后應用掃描指定的DLL文件,并檢查這些接口是否存在,如果存在,就加載到應用中,使用是,調用定義好的接口來完成所需功能。
下面是定義的接口類:



















































然后是調用接口的代碼:























具體功能實現代碼在這里:

























































































































運行時的樣子如下:

怎么樣,挺像回事吧。。。
posted on 2010-12-29 01:10 codejie 閱讀(1974) 評論(1) 編輯 收藏 引用 所屬分類: C++ 、輪子精神 、LingosHook