2014-01-30 22 views
1

我加載DLL使用此命令顯示路徑在一個MessageBox一個dll husing手柄

HINSTANCE DllEconovent = LoadLibrary(_T("Econovent.dll")); 

我想從該DLL從磁盤加載路徑......在這種情況下,假

C:\TFS_FWG\Acon\Oem\bin\Econovent.20140130_3200\Econovent64\Econovent.dll 

而只是消息框

MessageBox(_T("No valid ProcAddress"), _T("Error"), MB_ICONINFORMATION); 

展示它是如何以最好的方式完成這件事?

回答

3

看看GetModuleFileName:此函數「檢索包含指定模塊的文件的標準路徑」。

DWORD WINAPI GetModuleFileName(
    _In_opt_ HMODULE hModule, 
    _Out_  LPTSTR lpFilename, 
    _In_  DWORD nSize 
); 

應該拿在HINSTANCE對象,並給你回一個文件名。


一個簡單的例子

int main() 
{ 
    HINSTANCE test = LoadLibrary("test.dll"); 
    char buffer[MAX_PATH]; 
    GetModuleFileName(test, buffer, MAX_PATH); 
    std::cout << buffer << std::endl; 
    return 0; 
} 

它適應MessageBox,只是刪除符合std::cout並把

MessageBox(buffer, _T("Error"), MB_ICONINFORMATION); 
+0

請使用MAX_PATH,255是不是一個快樂的數量。 –

+0

@HansPassant聽起來不錯! –

相關問題