PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) { Measure* measure = (Measure*)data; std::lock_guard<std::recursive_mutex> lock(measure->mutex); measure->parameter = RmReadString(rm, L"Parameter", L""); measure->finishAction = RmReadString(rm, L"FinishAction", L"", FALSE); measure->outputFile = RmReadPath(rm, L"OutputFile", L""); measure->folder = RmReadPath(rm, L"StartInFolder", L" "); // Space is intentional! measure->timeout = RmReadInt(rm, L"Timeout", -1); const WCHAR* state = RmReadString(rm, L"State", L"HIDE"); if (_wcsicmp(state, L"SHOW") == 0) { measure->state = SW_SHOW; } else if (_wcsicmp(state, L"MAXIMIZE") == 0) { measure->state = SW_MAXIMIZE; } else if (_wcsicmp(state, L"MINIMIZE") == 0) { measure->state = SW_MINIMIZE; } else { measure->state = SW_HIDE; } // Grab "%COMSPEC% environment variable measure->program = RmReadString(rm, L"Program", RmReplaceVariables(rm, L"\"%COMSPEC%\" /U /C")); if (measure->program.empty()) { // Assume "cmd.exe" exists! measure->program = L"cmd.exe /U /C"; } const WCHAR* type = RmReadString(rm, L"OutputType", L"UTF16"); if (_wcsicmp(type, L"ANSI") == 0) { measure->outputType = OUTPUTTYPE_ANSI; } else if (_wcsicmp(type, L"UTF8") == 0) { measure->outputType = OUTPUTTYPE_UTF8; } else { measure->outputType = OUTPUTTYPE_UTF16; } }
PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) { MeasureData* measure = (MeasureData*)data; EnterCriticalSection(&g_CriticalSection); /* Read our own settings from the ini-file */ std::wstring url = RmReadString(rm, L"Url", L"", FALSE); std::wstring::size_type start = 0; while ((start = url.find(L"[&", start)) != std::wstring::npos) { std::wstring::size_type si = start + 1; std::wstring::size_type end = url.find(L']', si); if (end == std::wstring::npos) break; std::wstring var = L"["; var.append(url, si + 1, end - si); const WCHAR* result = RmReplaceVariables(rm, var.c_str()); const size_t resultLength = wcslen(result); url.replace(start, end - start + 1, result, resultLength); start += resultLength; } measure->url = url; measure->regExp = RmReadString(rm, L"RegExp", L""); measure->finishAction = RmReadString(rm, L"FinishAction", L"", FALSE); measure->onRegExpErrAction = RmReadString(rm, L"OnRegExpErrorAction", L"", FALSE); measure->onConnectErrAction = RmReadString(rm, L"OnConnectErrorAction", L"", FALSE); measure->onDownloadErrAction = RmReadString(rm, L"OnDownloadErrorAction", L"", FALSE); measure->errorString = RmReadString(rm, L"ErrorString", L""); int index = RmReadInt(rm, L"StringIndex", 0); measure->stringIndex = index < 0 ? 0 : index; index = RmReadInt(rm, L"StringIndex2", 0); measure->stringIndex2 = index < 0 ? 0 : index; measure->decodeCharacterReference = RmReadInt(rm, L"DecodeCharacterReference", 0); measure->updateRate = RmReadInt(rm, L"UpdateRate", 600); measure->forceReload = 0!=RmReadInt(rm, L"ForceReload", 0); measure->codepage = RmReadInt(rm, L"CodePage", 0); if (measure->codepage == 0) { measure->codepage = CP_UTF8; } measure->download = 0!=RmReadInt(rm, L"Download", 0); if (measure->download) { measure->downloadFolder = RmPathToAbsolute(rm, L"DownloadFile\\"); measure->downloadFile = RmReadString(rm, L"DownloadFile", L""); } else { measure->downloadFile.clear(); } measure->debug = RmReadInt(rm, L"Debug", 0); if (measure->debug == 2) { measure->debugFileLocation = RmReadPath(rm, L"Debug2File", L"WebParserDump.txt"); RmLog(rm, LOG_DEBUG, measure->debugFileLocation.c_str()); } LeaveCriticalSection(&g_CriticalSection); }