Page 1 of 1
Nahrání dynamické knihovny
Posted: 14 Dec 2012, 08:33
by darilek
Dobrý den,
lze nějak zjistit aktuální cestu v kontextu pluginu tak, aby bylo možné dohrát doplňkovou dynamickou knihovnu (pomoí LoadLibrary) umístěnou ve stejném adresáři jako základní *.spl soubor pluginu?
Re: Nahrání dynamické knihovny
Posted: 14 Dec 2012, 10:45
by Jan Rysavy
To není problém, plugin jen DLL a cestu na DLL lze získat pomocí Win32 API
GetModuleFileName.
Další info viz například
http://stackoverflow.com/questions/6924 ... at-runtime
Ukázka z PictView:
Code: Select all
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
if (fdwReason == DLL_PROCESS_ATTACH) // start PictView.spl
{
DLLInstance = hinstDLL;
}
...
BOOL LoadPictViewDll(HWND hParentWnd)
{
TCHAR path[_MAX_PATH];
if (!GetModuleFileName(DLLInstance, path, SizeOf(path)))
{
TRACE_E("GetModuleFileName failed");
return FALSE;
}
_tcsrchr(path, '\\')[0] = 0;
_tcscat(path, _T("\\PVW32Cnv.dll"));
PVW32DLL.Handle = LoadLibrary(path); // load PVW32Cnv.dll
if (!PVW32DLL.Handle)
{
TRACE_E("LoadLibrary(PVW32Cnv.dll) failed");
SalamanderGeneral->SalMessageBox(hParentWnd, LoadStr(IDS_DLL_NOTFOUND),
LoadStr(IDS_ERRORTITLE), MB_ICONSTOP | MB_OK);
return FALSE;
}
...