Nahrání dynamické knihovny

Podpora vývojářů nových pluginů, oznámení o nových pluginech nezávislých autorů a diskuse o nich.
darilek
Posts: 49
Joined: 29 Dec 2005, 10:28
Contact:

Nahrání dynamické knihovny

Post by darilek » 14 Dec 2012, 08:33

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?
-=:|MaD|:=-

Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5126
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Re: Nahrání dynamické knihovny

Post by Jan Rysavy » 14 Dec 2012, 10:45

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;
  }
  ...

Post Reply