回覆列表
-
1 # 使用者774056550451
-
2 # 藍風24
你得自己調顯示的函式啊。你載入模組了得調相應的函式顯示啊。
步驟如下:
1.載入動態庫(使動態庫程式執行)
HMODULE LoadLibrary(
LPCTSTR lpFileName
// 動態庫的名稱或全路徑
);//返回動態庫的例項控制代碼(HINSTANCE)。
如果dll檔案與.exe檔案在同一路徑下,只需要寫動態庫名稱,不在同一路徑下,則需寫帶碟符的全路徑
2.
獲取函式地址
FARPROC GetProcAddress(
HMODULE hModule,
// 動態庫例項控制代碼
LPCSTR lpProcName
// 函式名稱
);//執行成功,返回函式地址。
//現在才是你需要注意的地方,比如你dll中有一個show函式是顯示對話方塊的,你就根據上面第2步傳show引數得到的函式地址,透過函式指標直接呼叫就可以顯示了。
3.
解除安裝動態庫
BOOL FreeLibrary(
HMODULE hLibModule
// 動態庫例項控制代碼
);
HINSTANCE hInst = LoadLibrary(L"User32.DLL"); // 載入DLLif(hInst){ // 載入成功 // 定義待訪問函式原型 typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD); MYFUNC fun = NULL; // 獲取函式地址 fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes"); if(fun) { // 成功 fun(hWnd, RGB(0, 0, 0), 255, 2 | 1); } FreeLibrary(hInst); //釋放 DLL} 基本上就是這麼一個流程,LoadLibrary->成功->獲取函式入口點->呼叫函式->最後FreeLibrary,注意FreeLibrary是必須要實現的不然會造成資源洩漏。