[C/C++] 載入DLL中的副程式[轉貼]

每個dll可以包含資源或者是程式 今天就介紹如何載入dll檔提供的副程式
首先 先介紹如何開啟dll檔

範例如下

1
2
3
typedef HDC (*GETDC_PROTO)(HWND);
GETDC_PROTO _GetDC_ = (GETDC_PROTO)GetProcAddress(hMod,"GetDC");
// 以上載入GetDC副程式 載入成功後以下便可以使用 HDC dc = _GetDC_(NULL);

我們可以判斷 hMod 的值 如果不為NULL 則代表成功開啟
開啟之後 我們便可以載入程式了 本次示範載入GetDC()

要取得一個副函式 只需要將那個副函式的module跟名稱傳進GetProcAddress()即可
在取得之前 我們要先宣告一個函式指標 這個函式指標的宣告要跟所要取得的函式一樣
我們可以先用typedef 來定義好指標型態 之後指標轉型便可以重複利用他
取得指標之後 便可以像使用副程式一樣使用他
不用之後 可以將dll檔釋放掉

1
AfxFreeLibrary(hMod);

釋放掉之後 用GetProcAddress()所得到的指標便不能使用了
如果使用的話 便可能造成程式當掉

來源:swwuyam在天空部落發表於22:54:25

Prev: [Java] 利用jawin完成調用window中dll的調用[轉載]