青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Codejie's C++ Space

Using C++

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文件,并檢查這些接口是否存在,如果存在,就加載到應用中,使用是,調用定義好的接口來完成所需功能。

    下面是定義的接口類:

#ifndef __ACTIVITYOBJECT_H__
#define __ACTIVITYOBJECT_H__

#include 
"wx/wx.h"

class CDBAccess;

class ActivityObject
{
public:
    
struct PropertyData
    
{
        wxString m_strLabel;
        wxString m_strName;
        wxString m_strVersion;
        wxString m_strAuthor;
        wxString m_strDescription;
        wxString m_strDetail;
    }
;
public:
    ActivityObject();
    
virtual ~ActivityObject();

    
virtual int Init(int fparam = 0int sparam = 0return 0; }
    
virtual void Final() {}

    
virtual int LoadProperty(PropertyData& data) const = 0;

    
virtual int Run() = 0;

    
virtual bool NeedDBAccess() const return false; }
    
virtual bool NeedTagAccess() const return false; }

    
void SetDBObject(CDBAccess* obj);
protected:
    CDBAccess
* _objDBAccess;
}
;

#endif

    然后是調用接口的代碼:
int CPluginObject::LoadPlugin(int index, const wxString &plugfile)
{
    wxDynamicLibrary lib(plugfile);
    
if(!lib.IsLoaded())
        
return -1;

     GetActivityPtr ptr 
= (GetActivityPtr)lib.GetSymbol(wxT("GetActivity"));
     ActivityObject
* act = ptr();
     ActivityObject::PropertyData data;
     
if(act->LoadProperty(data) == 0)
     
{
         _mapActivity.insert(std::make_pair(index, plugfile));

         g_objTrigger.OnPluginLoad(index, data);
     }

     lib.Unload();

     
return 0;
}

   具體功能實現代碼在這里:
class WordExport : public ActivityObject
{
public:
    WordExport();
    
virtual ~WordExport();

    
virtual int Init(int fparam = 0int sparam = 0return 0; }
    
virtual void Final() {}

    
virtual int LoadProperty(PropertyData& data) const;

    
virtual int Run();

    
virtual bool NeedDBAccess() const return true; }

}
;

extern WordExport* _theActivity;

#include <windows.h>

#include 
"Exports.h"
#include 
"WordExport.h"

LINGOSHOOK_PLUGINS_API ActivityObject
* GetActivity()
{
    _theActivity 
= new WordExport();
    
return _theActivity;
}


int DLLInit()
{
    
return 0;
}


void DLLFinal()
{
    
if(_theActivity != NULL)
        delete _theActivity, _theActivity 
= NULL;
}


///////////
BOOL APIENTRY DllMain(HANDLE hModule, DWORD uCallReason, LPVOID pReserved)
{
    
switch(uCallReason)
    
{
    
case DLL_PROCESS_ATTACH:
        
if(DLLInit() != 0)
            
return FALSE;
        
break;
    
case DLL_THREAD_ATTACH:
        
break;
    
case DLL_THREAD_DETACH:
        
break;
    
case DLL_PROCESS_DETACH:
        DLLFinal();
        
break;
    
default:
        
return FALSE;
    }
;

    
return TRUE;
}


////

WordExport
* _theActivity = NULL;


WordExport::WordExport()
: ActivityObject()
{
}


WordExport::
~WordExport()
{
}


int WordExport::LoadProperty(PropertyData& data) const
{
    data.m_strLabel 
= wxT("WordExport");
    data.m_strName 
= wxT("Word Export");
    data.m_strVersion 
= wxT("0.0.1");
    data.m_strAuthor 
= wxT("codejie");
    data.m_strDescription 
= wxT("Export words from LingosHook to a Text file.");
    data.m_strDetail 
= wxT("NONE.");

    
return 0;
}


int WordExport::Run()
{
    
return -1;
}


    運行時的樣子如下:


    怎么樣,挺像回事吧。。。

posted on 2010-12-29 01:10 codejie 閱讀(1990) 評論(1)  編輯 收藏 引用 所屬分類: C++輪子精神LingosHook

評論

# re: LingosHook:Plugins[未登錄] 2010-12-29 11:22 潘孫友

灰常像樣了,呵呵  回復  更多評論   

公告

Using C++

導航

統計

留言簿(73)

隨筆分類(513)

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久青草久久| 国产在线播精品第三| 亚洲伦理一区| 久久婷婷色综合| 亚洲看片一区| 在线免费高清一区二区三区| 亚洲经典三级| 久久综合给合久久狠狠狠97色69| 这里只有精品视频| 亚洲国产一成人久久精品| 国产综合视频| 狠狠色伊人亚洲综合网站色| 国产模特精品视频久久久久| 国产精品色婷婷| 欧美三日本三级少妇三2023| 欧美日韩成人综合天天影院| 久久久久欧美精品| 久久精品99| 久久久久久黄| 欧美成人一区二区在线| 欧美成人69| 欧美日韩国内| 国产精品美女久久久浪潮软件| 国产精品福利在线| 国产亚洲精品bt天堂精选| 国产精品激情| 狠狠色狠狠色综合日日五| 亚洲国产欧美一区二区三区久久 | 美女国产一区| 久久久噜噜噜久久| 欧美高清视频一二三区| 欧美无乱码久久久免费午夜一区| 国产精品专区第二| 亚洲高清激情| 国产日韩精品综合网站| 国产综合视频在线观看| 亚洲一区二区视频| 欧美私人网站| 国产欧美一区二区色老头| 国产字幕视频一区二区| 亚洲高清自拍| 亚洲一区二区高清视频| 久久久久久久一区| 欧美激情亚洲另类| 欧美a级一区| 在线天堂一区av电影| 久久精品欧洲| 国产精品videosex极品| 伊人精品久久久久7777| 亚洲淫性视频| 亚洲第一区在线观看| 亚洲综合精品四区| 精品成人乱色一区二区| 国产一区二区三区在线观看免费| 国内精品久久久久久久果冻传媒| 亚洲欧洲日产国产综合网| 欧美一区2区三区4区公司二百| 男女激情视频一区| 亚洲欧美激情一区二区| 欧美日韩国产在线| 亚洲国产欧美另类丝袜| 亚洲精品四区| 裸体素人女欧美日韩| 亚洲在线视频免费观看| 欧美日韩一区二区在线播放| 亚洲国产精品小视频| 一本久道久久综合狠狠爱| 麻豆成人精品| 亚洲精品资源| 亚洲一区二区在线免费观看| 欧美主播一区二区三区美女 久久精品人| 在线一区二区三区做爰视频网站 | 性色av香蕉一区二区| 亚洲黑丝在线| 久久久精品一品道一区| 国产精品视频免费观看| 狠狠综合久久av一区二区老牛| 午夜欧美不卡精品aaaaa| 亚洲精品国产精品乱码不99 | 亚洲肉体裸体xxxx137| 国产精品永久入口久久久| 亚洲国产清纯| 久久综合综合久久综合| 欧美大片免费观看| 亚洲精品一区二区三| 久久久久高清| 国产欧美精品日韩区二区麻豆天美| 亚洲精品看片| 91久久精品一区二区别| 欧美极品一区二区三区| avtt综合网| 欧美高清在线| 欧美二区在线播放| 日韩午夜在线播放| 亚洲承认在线| 欧美精品一区二| 一区二区三区欧美视频| 99精品国产在热久久| 国产精品久久久久aaaa| 性8sex亚洲区入口| 亚洲一二三区精品| 国产主播一区二区三区| 免费毛片一区二区三区久久久| 另类人畜视频在线| 日韩视频免费| 一区二区高清在线观看| 国产日韩成人精品| 欧美成人日韩| 欧美日韩一区在线视频| 国产精品午夜在线| 久久综合五月| 欧美在线电影| 亚洲人线精品午夜| 亚洲一级黄色av| 精品不卡视频| 亚洲午夜精品| 亚洲精品永久免费精品| 午夜精品一区二区三区在线播放 | 国产精品国产三级国产普通话三级| 午夜免费电影一区在线观看| 久久一综合视频| 亚洲欧美日韩精品久久| 欧美国产精品va在线观看| 久久久精品一区二区三区| 欧美性开放视频| 亚洲电影自拍| 国外精品视频| 香蕉久久一区二区不卡无毒影院 | 亚洲国产另类久久精品| 激情综合网激情| 欧美一区二区三区免费视频| 欧美一级一区| 国产日本欧美一区二区| 一区二区三区四区国产精品| 一区二区三区四区五区视频| 欧美日韩调教| 亚洲视频一二三| 久久国产精品久久久| 亚洲精品久久嫩草网站秘色| 欧美国产日韩在线| 久久国产一二区| 狠狠色狠狠色综合| 欧美午夜精品一区| 欧美三级资源在线| 欧美精品在线一区二区三区| 六月婷婷久久| 欧美一级视频免费在线观看| 亚洲伦伦在线| 亚洲欧美欧美一区二区三区| 一本久久青青| 欧美日韩ab| 中国成人在线视频| 亚洲欧美日韩国产成人精品影院| 欧美日韩成人一区二区三区| 亚洲国产一区二区三区高清| 在线观看福利一区| 免费不卡在线观看| 亚洲精品乱码视频| 中国亚洲黄色| 国产日韩一区二区| 久久美女性网| 亚洲精选在线| 欧美在线看片| 亚洲二区在线视频| 欧美日韩综合一区| 性欧美xxxx视频在线观看| 美日韩精品免费| 日韩亚洲欧美综合| 国产精品人人做人人爽人人添| 午夜国产精品视频| 欧美激情第六页| 亚洲综合国产| 亚洲国产精品一区二区第四页av| 欧美精品一卡| 欧美专区第一页| 亚洲激情视频网站| 久久成人在线| 亚洲精品久久嫩草网站秘色| 国产毛片精品国产一区二区三区| 久久精品日产第一区二区三区 | 国产精品自在欧美一区| 欧美一级精品大片| 欧美激情视频一区二区三区不卡| 亚洲欧美日韩在线不卡| 一区在线播放视频| 国产精品久久久久久久浪潮网站 | 亚洲视频一二| 红桃av永久久久| 欧美日韩在线精品| 久久福利视频导航| av成人免费| 亚洲电影下载| 午夜亚洲激情| 日韩亚洲国产精品| 久久久久国产精品麻豆ai换脸 | 久久www成人_看片免费不卡| 亚洲精品国产精品国自产观看| 国产精品国产三级国产专播品爱网 | 久久久久久久一区二区三区| 亚洲午夜av在线|