#include #include // nsis plugin HINSTANCE g_hInstance; HWND g_hwndParent; // To work with Unicode version of NSIS, please use TCHAR-type // functions for accessing the variables and the stack. void __declspec(dllexport) myFunction(HWND hwndParent, int string_size, LPTSTR variables, stack_t **stacktop, extra_parameters *extra, ...) { EXDLL_INIT(); g_hwndParent = hwndParent; // note if you want parameters from the stack, pop them off in order. // i.e. if you are called via exdll::myFunction file.dat read.txt // calling popstring() the first time would give you file.dat, // and the second time would give you read.txt. // you should empty the stack of your parameters, and ONLY your // parameters. // do your stuff here { LPTSTR msgbuf = (LPTSTR) GlobalAlloc(GPTR, (3 + string_size + 1) * sizeof(*msgbuf)); if (msgbuf) { wsprintf(msgbuf, TEXT("$0=%s"), getuservariable(INST_0)); MessageBox(g_hwndParent, msgbuf, TEXT("Message from example plugin"), MB_OK); GlobalFree(msgbuf); } } } BOOL WINAPI DllMain(HINSTANCE hInst, ULONG ul_reason_for_call, LPVOID lpReserved) { g_hInstance = hInst; return TRUE; }