stardict set gStarDictDataDir



static void set_data_dir()
{
    //set gStarDictDataDir;
#ifdef _WIN32
    HMODULE hmod;

    if ((hmod = GetModuleHandle(NULL))==0) //取得目前 process的載入位址
        exit(EXIT_FAILURE);
    char tmp_buf[256];
    if (GetModuleFileName(hmod, tmp_buf, sizeof(tmp_buf))==0)
        exit(EXIT_FAILURE);

    gchar* buf = g_path_get_dirname(tmp_buf);
    gStarDictDataDir=buf;   
    g_free(buf);
#else
    gStarDictDataDir = _DATA_DIR;
#endif
}

GetModuleHandle是Windows API的函式,函式庫是kernel32.dll,用來由模組名稱得到該模組的頭銜
GetModuleFileName也是Windows API的函式,函式庫是kernel32.dll,用來從已載入的模組得知該可執行檔的檔名及完整路徑

g_path_get_dirname是Glib函式庫裡雜項的實用函式,功能是取得取得檔案名稱的目錄部份。

g_free是釋放指向buf的記憶體。

這個函式的功能就是設定gStarDictDataDir的目錄,在Windows下我測到是指向C:\Program Files\StarDict,因為StarDict就是安裝在這裡!

Print Friendly, PDF & Email

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料