From d1a7b604df7a183145e634ee6327f7bedd47b4af Mon Sep 17 00:00:00 2001 From: spx Date: Thu, 16 Dec 2010 20:35:44 +0000 Subject: [PATCH] Core dll: - Replace swprintf/wsprintf/wcscpy/wcscat to _snwprintf_s/wcsncpy_s/wcsncat_s. - Changed printf format parameter strictly for supporting both 32bit and 64bit. - Fixed an issue that !RainmeterWriteKeyValue doesn't accept %APPDATA%\Rainmeter path. - Code cleanup. --- Library/AboutDialog.cpp | 12 +- Library/ConfigParser.cpp | 94 ++++----- Library/ConfigParser.h | 2 + Library/Error.cpp | 2 +- Library/Litestep.cpp | 6 +- Library/Measure.cpp | 34 ++-- Library/Measure.h | 2 +- Library/MeasureCalc.cpp | 2 +- Library/MeasureNet.cpp | 30 +-- Library/MeasurePlugin.cpp | 4 +- Library/MeasureTime.cpp | 4 +- Library/Meter.cpp | 4 +- Library/MeterBitmap.cpp | 4 +- Library/MeterLine.cpp | 10 +- Library/MeterString.cpp | 2 +- Library/MeterWindow.cpp | 50 ++--- Library/Rainmeter.cpp | 382 ++++++++++++++++++------------------- Library/System.cpp | 36 ++-- Library/TrayWindow.cpp | 36 ++-- Library/lua/LuaManager.cpp | 4 +- 20 files changed, 361 insertions(+), 359 deletions(-) diff --git a/Library/AboutDialog.cpp b/Library/AboutDialog.cpp index 7225daf3..2847cd18 100644 --- a/Library/AboutDialog.cpp +++ b/Library/AboutDialog.cpp @@ -204,10 +204,10 @@ void UpdateAboutStatistics(LPCTSTR entryName) WCHAR buffer[256]; double minVal = (*i)->GetMinValue(); double maxVal = (*i)->GetMaxValue(); - CMeasure::GetScaledValue(1, minVal, buffer); + CMeasure::GetScaledValue(1, minVal, buffer, _countof(buffer)); std::wstring range = buffer; range += L" - "; - CMeasure::GetScaledValue(1, maxVal, buffer); + CMeasure::GetScaledValue(1, maxVal, buffer, _countof(buffer)); range += buffer; if (name && *name) @@ -306,7 +306,7 @@ void UpdateWidgets() if ((*iter).version != 0) { WCHAR buffer[64]; - swprintf(buffer, L"%i.%i", (*iter).version / 1000, (*iter).version % 1000); + _snwprintf_s(buffer, _TRUNCATE, L"%u.%u", (*iter).version / 1000, (*iter).version % 1000); ListView_SetItemText(widget, i, 1, buffer); } @@ -380,7 +380,7 @@ void ScanPlugins() } else { - DebugLog(L"Unable to load library: \"%s\", ErrorCode=%i", tmpSz.c_str(), err); + DebugLog(L"Unable to load library: \"%s\", ErrorCode=%u", tmpSz.c_str(), err); } g_Plugins.push_back(info); @@ -429,11 +429,11 @@ BOOL OnInitAboutDialog(HWND window) HWND widget; widget = GetDlgItem(window, IDC_VERSION_STRING); - swprintf(tmpSz, L"%s %s%s rev %i %s", APPNAME, APPVERSION, revision_beta ? L" Beta" : L"", revision_number, APPBITS); + _snwprintf_s(tmpSz, _TRUNCATE, L"%s %s%s rev %i %s", APPNAME, APPVERSION, revision_beta ? L" Beta" : L"", revision_number, APPBITS); SetWindowText(widget, tmpSz); widget = GetDlgItem(window, IDC_BUILD_STRING); - swprintf(tmpSz, L"Built on %s", ConvertToWide(__DATE__).c_str()); + _snwprintf_s(tmpSz, _TRUNCATE, L"Built on %s", ConvertToWide(__DATE__).c_str()); SetWindowText(widget, tmpSz); CheckDlgButton(window, IDC_DISABLE_VERSION_CHECK, Rainmeter->GetDisableVersionCheck() ? BST_CHECKED : BST_UNCHECKED); diff --git a/Library/ConfigParser.cpp b/Library/ConfigParser.cpp index 3c3c6847..7c6676d3 100644 --- a/Library/ConfigParser.cpp +++ b/Library/ConfigParser.cpp @@ -145,7 +145,7 @@ void CConfigParser::ReadVariables() */ void CConfigParser::SetVariable(std::map& variables, const std::wstring& strVariable, const std::wstring& strValue) { - // DebugLog(L"Variable: %s=%s (size=%i)", strVariable.c_str(), strValue.c_str(), m_Variables.size()); + // DebugLog(L"Variable: %s=%s (size=%i)", strVariable.c_str(), strValue.c_str(), (int)m_Variables.size()); std::wstring strTmp(strVariable); std::transform(strTmp.begin(), strTmp.end(), strTmp.begin(), ::towlower); @@ -230,16 +230,16 @@ void CConfigParser::SetMultiMonitorVariables(bool reset) SystemParametersInfo(SPI_GETWORKAREA, 0, &workArea, 0); - swprintf(buffer, L"%i", workArea.left); + _snwprintf_s(buffer, _TRUNCATE, L"%i", workArea.left); SetMonitorVariable(L"WORKAREAX", buffer); SetMonitorVariable(L"PWORKAREAX", buffer); - swprintf(buffer, L"%i", workArea.top); + _snwprintf_s(buffer, _TRUNCATE, L"%i", workArea.top); SetMonitorVariable(L"WORKAREAY", buffer); SetMonitorVariable(L"PWORKAREAY", buffer); - swprintf(buffer, L"%i", workArea.right - workArea.left); + _snwprintf_s(buffer, _TRUNCATE, L"%i", workArea.right - workArea.left); SetMonitorVariable(L"WORKAREAWIDTH", buffer); SetMonitorVariable(L"PWORKAREAWIDTH", buffer); - swprintf(buffer, L"%i", workArea.bottom - workArea.top); + _snwprintf_s(buffer, _TRUNCATE, L"%i", workArea.bottom - workArea.top); SetMonitorVariable(L"WORKAREAHEIGHT", buffer); SetMonitorVariable(L"PWORKAREAHEIGHT", buffer); @@ -250,26 +250,26 @@ void CConfigParser::SetMultiMonitorVariables(bool reset) scrArea.right = GetSystemMetrics(SM_CXSCREEN); scrArea.bottom = GetSystemMetrics(SM_CYSCREEN); - swprintf(buffer, L"%i", scrArea.left); + _snwprintf_s(buffer, _TRUNCATE, L"%i", scrArea.left); SetMonitorVariable(L"SCREENAREAX", buffer); SetMonitorVariable(L"PSCREENAREAX", buffer); - swprintf(buffer, L"%i", scrArea.top); + _snwprintf_s(buffer, _TRUNCATE, L"%i", scrArea.top); SetMonitorVariable(L"SCREENAREAY", buffer); SetMonitorVariable(L"PSCREENAREAY", buffer); - swprintf(buffer, L"%i", scrArea.right - scrArea.left); + _snwprintf_s(buffer, _TRUNCATE, L"%i", scrArea.right - scrArea.left); SetMonitorVariable(L"SCREENAREAWIDTH", buffer); SetMonitorVariable(L"PSCREENAREAWIDTH", buffer); - swprintf(buffer, L"%i", scrArea.bottom - scrArea.top); + _snwprintf_s(buffer, _TRUNCATE, L"%i", scrArea.bottom - scrArea.top); SetMonitorVariable(L"SCREENAREAHEIGHT", buffer); SetMonitorVariable(L"PSCREENAREAHEIGHT", buffer); - swprintf(buffer, L"%i", GetSystemMetrics(SM_XVIRTUALSCREEN)); + _snwprintf_s(buffer, _TRUNCATE, L"%i", GetSystemMetrics(SM_XVIRTUALSCREEN)); SetMonitorVariable(L"VSCREENAREAX", buffer); - swprintf(buffer, L"%i", GetSystemMetrics(SM_YVIRTUALSCREEN)); + _snwprintf_s(buffer, _TRUNCATE, L"%i", GetSystemMetrics(SM_YVIRTUALSCREEN)); SetMonitorVariable(L"VSCREENAREAY", buffer); - swprintf(buffer, L"%i", GetSystemMetrics(SM_CXVIRTUALSCREEN)); + _snwprintf_s(buffer, _TRUNCATE, L"%i", GetSystemMetrics(SM_CXVIRTUALSCREEN)); SetMonitorVariable(L"VSCREENAREAWIDTH", buffer); - swprintf(buffer, L"%i", GetSystemMetrics(SM_CYVIRTUALSCREEN)); + _snwprintf_s(buffer, _TRUNCATE, L"%i", GetSystemMetrics(SM_CYVIRTUALSCREEN)); SetMonitorVariable(L"VSCREENAREAHEIGHT", buffer); } @@ -284,34 +284,34 @@ void CConfigParser::SetMultiMonitorVariables(bool reset) const RECT work = (monitors[i].active) ? monitors[i].work : workArea; - swprintf(buffer, L"%i", work.left); - swprintf(buffer2, L"WORKAREAX@%i", i + 1); + _snwprintf_s(buffer, _TRUNCATE, L"%i", work.left); + _snwprintf_s(buffer2, _TRUNCATE, L"WORKAREAX@%i", (int)i + 1); SetMonitorVariable(buffer2, buffer); - swprintf(buffer, L"%i", work.top); - swprintf(buffer2, L"WORKAREAY@%i", i + 1); + _snwprintf_s(buffer, _TRUNCATE, L"%i", work.top); + _snwprintf_s(buffer2, _TRUNCATE, L"WORKAREAY@%i", (int)i + 1); SetMonitorVariable(buffer2, buffer); - swprintf(buffer, L"%i", work.right - work.left); - swprintf(buffer2, L"WORKAREAWIDTH@%i", i + 1); + _snwprintf_s(buffer, _TRUNCATE, L"%i", work.right - work.left); + _snwprintf_s(buffer2, _TRUNCATE, L"WORKAREAWIDTH@%i", (int)i + 1); SetMonitorVariable(buffer2, buffer); - swprintf(buffer, L"%i", work.bottom - work.top); - swprintf(buffer2, L"WORKAREAHEIGHT@%i", i + 1); + _snwprintf_s(buffer, _TRUNCATE, L"%i", work.bottom - work.top); + _snwprintf_s(buffer2, _TRUNCATE, L"WORKAREAHEIGHT@%i", (int)i + 1); SetMonitorVariable(buffer2, buffer); if (reset) { const RECT screen = (monitors[i].active) ? monitors[i].screen : scrArea; - swprintf(buffer, L"%i", screen.left); - swprintf(buffer2, L"SCREENAREAX@%i", i + 1); + _snwprintf_s(buffer, _TRUNCATE, L"%i", screen.left); + _snwprintf_s(buffer2, _TRUNCATE, L"SCREENAREAX@%i", (int)i + 1); SetMonitorVariable(buffer2, buffer); - swprintf(buffer, L"%i", screen.top); - swprintf(buffer2, L"SCREENAREAY@%i", i + 1); + _snwprintf_s(buffer, _TRUNCATE, L"%i", screen.top); + _snwprintf_s(buffer2, _TRUNCATE, L"SCREENAREAY@%i", (int)i + 1); SetMonitorVariable(buffer2, buffer); - swprintf(buffer, L"%i", screen.right - screen.left); - swprintf(buffer2, L"SCREENAREAWIDTH@%i", i + 1); + _snwprintf_s(buffer, _TRUNCATE, L"%i", screen.right - screen.left); + _snwprintf_s(buffer2, _TRUNCATE, L"SCREENAREAWIDTH@%i", (int)i + 1); SetMonitorVariable(buffer2, buffer); - swprintf(buffer, L"%i", screen.bottom - screen.top); - swprintf(buffer2, L"SCREENAREAHEIGHT@%i", i + 1); + _snwprintf_s(buffer, _TRUNCATE, L"%i", screen.bottom - screen.top); + _snwprintf_s(buffer2, _TRUNCATE, L"SCREENAREAHEIGHT@%i", (int)i + 1); SetMonitorVariable(buffer2, buffer); } } @@ -362,13 +362,13 @@ void CConfigParser::SetAutoSelectedMonitorVariables(CMeterWindow* meterWindow) s2 = monitors[screenIndex-1].screen.right - monitors[screenIndex-1].screen.left; } - swprintf(buffer, L"%i", w1); + _snwprintf_s(buffer, _TRUNCATE, L"%i", w1); SetBuiltInVariable(L"WORKAREAX", buffer); - swprintf(buffer, L"%i", w2); + _snwprintf_s(buffer, _TRUNCATE, L"%i", w2); SetBuiltInVariable(L"WORKAREAWIDTH", buffer); - swprintf(buffer, L"%i", s1); + _snwprintf_s(buffer, _TRUNCATE, L"%i", s1); SetBuiltInVariable(L"SCREENAREAX", buffer); - swprintf(buffer, L"%i", s2); + _snwprintf_s(buffer, _TRUNCATE, L"%i", s2); SetBuiltInVariable(L"SCREENAREAWIDTH", buffer); // Set Y / HEIGHT @@ -395,13 +395,13 @@ void CConfigParser::SetAutoSelectedMonitorVariables(CMeterWindow* meterWindow) s2 = monitors[screenIndex-1].screen.bottom - monitors[screenIndex-1].screen.top; } - swprintf(buffer, L"%i", w1); + _snwprintf_s(buffer, _TRUNCATE, L"%i", w1); SetBuiltInVariable(L"WORKAREAY", buffer); - swprintf(buffer, L"%i", w2); + _snwprintf_s(buffer, _TRUNCATE, L"%i", w2); SetBuiltInVariable(L"WORKAREAHEIGHT", buffer); - swprintf(buffer, L"%i", s1); + _snwprintf_s(buffer, _TRUNCATE, L"%i", s1); SetBuiltInVariable(L"SCREENAREAY", buffer); - swprintf(buffer, L"%i", s2); + _snwprintf_s(buffer, _TRUNCATE, L"%i", s2); SetBuiltInVariable(L"SCREENAREAHEIGHT", buffer); } else @@ -411,13 +411,13 @@ void CConfigParser::SetAutoSelectedMonitorVariables(CMeterWindow* meterWindow) // Set default WORKAREA SystemParametersInfo(SPI_GETWORKAREA, 0, &r, 0); - swprintf(buffer, L"%i", r.left); + _snwprintf_s(buffer, _TRUNCATE, L"%i", r.left); SetBuiltInVariable(L"WORKAREAX", buffer); - swprintf(buffer, L"%i", r.top); + _snwprintf_s(buffer, _TRUNCATE, L"%i", r.top); SetBuiltInVariable(L"WORKAREAY", buffer); - swprintf(buffer, L"%i", r.right - r.left); + _snwprintf_s(buffer, _TRUNCATE, L"%i", r.right - r.left); SetBuiltInVariable(L"WORKAREAWIDTH", buffer); - swprintf(buffer, L"%i", r.bottom - r.top); + _snwprintf_s(buffer, _TRUNCATE, L"%i", r.bottom - r.top); SetBuiltInVariable(L"WORKAREAHEIGHT", buffer); // Set default SCREENAREA @@ -426,13 +426,13 @@ void CConfigParser::SetAutoSelectedMonitorVariables(CMeterWindow* meterWindow) r.right = GetSystemMetrics(SM_CXSCREEN); r.bottom = GetSystemMetrics(SM_CYSCREEN); - swprintf(buffer, L"%i", r.left); + _snwprintf_s(buffer, _TRUNCATE, L"%i", r.left); SetBuiltInVariable(L"SCREENAREAX", buffer); - swprintf(buffer, L"%i", r.top); + _snwprintf_s(buffer, _TRUNCATE, L"%i", r.top); SetBuiltInVariable(L"SCREENAREAY", buffer); - swprintf(buffer, L"%i", r.right - r.left); + _snwprintf_s(buffer, _TRUNCATE, L"%i", r.right - r.left); SetBuiltInVariable(L"SCREENAREAWIDTH", buffer); - swprintf(buffer, L"%i", r.bottom - r.top); + _snwprintf_s(buffer, _TRUNCATE, L"%i", r.bottom - r.top); SetBuiltInVariable(L"SCREENAREAHEIGHT", buffer); } } @@ -613,7 +613,7 @@ const std::wstring& CConfigParser::ReadString(LPCTSTR section, LPCTSTR key, LPCT const std::wstring& strStyle = GetValue(strSection, key, strDefault); - //DebugLog(L"[%s] %s (from [%s]) : strDefault=%s (0x%08X), strStyle=%s (0x%08X)", + //DebugLog(L"[%s] %s (from [%s]) : strDefault=%s (0x%p), strStyle=%s (0x%p)", // section, key, strSection.c_str(), strDefault.c_str(), &strDefault, strStyle.c_str(), &strStyle); if (&strStyle != &strDefault) @@ -1187,7 +1187,7 @@ void CConfigParser::ReadIniFile(const std::vector& iniFileMappings */ void CConfigParser::SetValue(const std::wstring& strSection, const std::wstring& strKey, const std::wstring& strValue) { - // DebugLog(L"[%s] %s=%s (size: %i)", strSection.c_str(), strKey.c_str(), strValue.c_str(), m_Values.size()); + // DebugLog(L"[%s] %s=%s (size: %i)", strSection.c_str(), strKey.c_str(), strValue.c_str(), (int)m_Values.size()); std::wstring strTmpSection(strSection); std::wstring strTmpKey(strKey); diff --git a/Library/ConfigParser.h b/Library/ConfigParser.h index e2553434..e26151d0 100644 --- a/Library/ConfigParser.h +++ b/Library/ConfigParser.h @@ -19,6 +19,8 @@ #ifndef __CONFIGPARSER_H__ #define __CONFIGPARSER_H__ +#pragma warning(disable: 4503) + #include #include #include diff --git a/Library/Error.cpp b/Library/Error.cpp index 042153d3..1321fb9c 100644 --- a/Library/Error.cpp +++ b/Library/Error.cpp @@ -43,7 +43,7 @@ const std::wstring& CError::GetString() m_String = c_ErrorStrings[m_Error]; // if (m_File) // { -// swprintf(Buffer, L"%i", m_Line); +// _snwprintf_s(Buffer, _TRUNCATE, L"%i", m_Line); // // m_String += L"\n("; // m_String += m_File; diff --git a/Library/Litestep.cpp b/Library/Litestep.cpp index 7b377dca..f34d4cc2 100644 --- a/Library/Litestep.cpp +++ b/Library/Litestep.cpp @@ -515,7 +515,7 @@ BOOL LSLog(int nLevel, LPCTSTR pszModule, LPCTSTR pszMessage) startTime = time; } WCHAR buffer[128]; - swprintf(buffer, L"(%02i:%02i:%02i.%03i) ", (time - startTime) / (1000 * 60* 60), ((time - startTime) / (1000 * 60)) % 60, ((time - startTime) / 1000) % 60, (time - startTime) % 1000); + _snwprintf_s(buffer, _TRUNCATE, L"(%02i:%02i:%02i.%03i) ", (time - startTime) / (1000 * 60* 60), ((time - startTime) / (1000 * 60)) % 60, ((time - startTime) / 1000) % 60, (time - startTime) % 1000); std::wstring message(buffer); logInfo.timestamp = message; @@ -615,10 +615,10 @@ void DebugLog(const WCHAR* format, ... ) _CrtSetReportMode(_CRT_ASSERT, 0); errno = 0; - _vsnwprintf_s( buffer, 4096, _TRUNCATE, format, args ); + _vsnwprintf_s( buffer, _TRUNCATE, format, args ); if (errno != 0) { - _snwprintf_s(buffer, 4096, _TRUNCATE, L"DebugLog internal error: %s", format); + _snwprintf_s(buffer, _TRUNCATE, L"DebugLog internal error: %s", format); } _set_invalid_parameter_handler(oldHandler); diff --git a/Library/Measure.cpp b/Library/Measure.cpp index b6f40695..fae0176f 100644 --- a/Library/Measure.cpp +++ b/Library/Measure.cpp @@ -511,17 +511,17 @@ const WCHAR* CMeasure::GetStringValue(bool autoScale, double scale, int decimals if (decimals == 0) { - swprintf(buffer, L"%i", (UINT)val); + _snwprintf_s(buffer, _TRUNCATE, L"%i", (int)val); } else { - swprintf(format, L"%%.%if", decimals); - swprintf(buffer, format, val); + _snwprintf_s(format, _TRUNCATE, L"%%.%if", decimals); + _snwprintf_s(buffer, _TRUNCATE, format, val); } } else if(autoScale) { - GetScaledValue(decimals, GetValue(), buffer); + GetScaledValue(decimals, GetValue(), buffer, _countof(buffer)); } else { @@ -530,11 +530,11 @@ const WCHAR* CMeasure::GetStringValue(bool autoScale, double scale, int decimals if(decimals == 0) { val += (val >= 0) ? 0.5 : -0.5; - swprintf(buffer, L"%lli", (LONGLONG)val); + _snwprintf_s(buffer, _TRUNCATE, L"%lli", (LONGLONG)val); } else if (decimals == -1) { - swprintf(buffer, L"%.5f", val); + _snwprintf_s(buffer, _TRUNCATE, L"%.5f", val); size_t len = wcslen(buffer); if (len >= 6 && wcscmp(&buffer[len - 6], L".00000") == 0) @@ -544,54 +544,54 @@ const WCHAR* CMeasure::GetStringValue(bool autoScale, double scale, int decimals } else { - swprintf(format, L"%%.%if", decimals); - swprintf(buffer, format, val); + _snwprintf_s(format, _TRUNCATE, L"%%.%if", decimals); + _snwprintf_s(buffer, _TRUNCATE, format, val); } } return CheckSubstitute(buffer); } -void CMeasure::GetScaledValue(int decimals, double theValue, WCHAR* buffer) +void CMeasure::GetScaledValue(int decimals, double theValue, WCHAR* buffer, size_t sizeInWords) { WCHAR format[32]; double value = 0; if(decimals == 0) { - wcscpy(format, L"%.0f"); + wcsncpy_s(format, L"%.0f", _TRUNCATE); } else { - swprintf(format, L"%%.%if", decimals); + _snwprintf_s(format, _TRUNCATE, L"%%.%if", decimals); } if(theValue > 1000.0 * 1000.0 * 1000.0 * 1000.0) { - wcscat(format, L" T"); + wcsncat_s(format, L" T", _TRUNCATE); value = theValue / (1024.0 * 1024.0 * 1024.0 * 1024.0); } else if(theValue > 1000.0 * 1000.0 * 1000.0) { - wcscat(format, L" G"); + wcsncat_s(format, L" G", _TRUNCATE); value = theValue / (1024.0 * 1024.0 * 1024.0); } else if(theValue > 1000.0 * 1000.0) { - wcscat(format, L" M"); + wcsncat_s(format, L" M", _TRUNCATE); value = theValue / (1024.0 * 1024.0); } else if(theValue > 1000.0) { - wcscat(format, L" k"); + wcsncat_s(format, L" k", _TRUNCATE); value = theValue / 1024.0; } else { - wcscat(format, L" "); + wcsncat_s(format, L" ", _TRUNCATE); value = theValue; } - swprintf(buffer, format, value); + _snwprintf_s(buffer, sizeInWords, _TRUNCATE, format, value); } diff --git a/Library/Measure.h b/Library/Measure.h index 9a201256..709bfc1a 100644 --- a/Library/Measure.h +++ b/Library/Measure.h @@ -59,7 +59,7 @@ public: UINT GetUpdateDivider() { return m_UpdateDivider; } virtual const WCHAR* GetStringValue(bool autoScale, double scale, int decimals, bool percentual); - static void GetScaledValue(int decimals, double theValue, WCHAR* buffer); + static void GetScaledValue(int decimals, double theValue, WCHAR* buffer, size_t sizeInWords); static CMeasure* Create(const WCHAR* measure, CMeterWindow* meterWindow); diff --git a/Library/MeasureCalc.cpp b/Library/MeasureCalc.cpp index ea421882..8e893835 100644 --- a/Library/MeasureCalc.cpp +++ b/Library/MeasureCalc.cpp @@ -179,7 +179,7 @@ void CMeasureCalc::FormulaReplace() int randNumber = m_LowBound + (int)(range * rand()/(RAND_MAX + 1.0)); WCHAR buffer[32]; - wsprintf(buffer, L"%i", randNumber); + _snwprintf_s(buffer, _TRUNCATE, L"%i", randNumber); m_Formula.replace(loc, 6, buffer); loc += wcslen(buffer); diff --git a/Library/MeasureNet.cpp b/Library/MeasureNet.cpp index 765a4ff1..920c7e6f 100644 --- a/Library/MeasureNet.cpp +++ b/Library/MeasureNet.cpp @@ -144,7 +144,7 @@ void CMeasureNet::UpdateIFTable() break; } - DebugLog(L"%i: %s", i + 1, ifTable->Table[i].Description); + DebugLog(L"%i: %s", (int)i + 1, ifTable->Table[i].Description); DebugLog(L" Alias: %s", ifTable->Table[i].Alias); DebugLog(L" Type=%s(%i), Hardware=%s, Filter=%s", type.c_str(), ifTable->Table[i].Type, @@ -242,7 +242,7 @@ void CMeasureNet::UpdateIFTable() break; } - DebugLog(L"%i: %s", i + 1, ConvertToWide(desc.c_str()).c_str()); + DebugLog(L"%i: %s", (int)i + 1, ConvertToWide(desc.c_str()).c_str()); DebugLog(L" Type=%s(%i)", type.c_str(), ifTable->table[i].dwType); } @@ -589,18 +589,18 @@ void CMeasureNet::ReadStats(const std::wstring& iniFile) { ULARGE_INTEGER value; - wsprintf(buffer, L"NetStatsInHigh%i", i); + _snwprintf_s(buffer, _TRUNCATE, L"NetStatsInHigh%i", i); value.HighPart = (DWORD)GetPrivateProfileInt(L"Statistics", buffer, 0, iniFile.c_str()); - wsprintf(buffer, L"NetStatsInLow%i", i); + _snwprintf_s(buffer, _TRUNCATE, L"NetStatsInLow%i", i); value.LowPart = (DWORD)GetPrivateProfileInt(L"Statistics", buffer, 0, iniFile.c_str()); c_StatValues.push_back(value.QuadPart); - wsprintf(buffer, L"NetStatsOutHigh%i", i); + _snwprintf_s(buffer, _TRUNCATE, L"NetStatsOutHigh%i", i); value.HighPart = (DWORD)GetPrivateProfileInt(L"Statistics", buffer, 0, iniFile.c_str()); - wsprintf(buffer, L"NetStatsOutLow%i", i); + _snwprintf_s(buffer, _TRUNCATE, L"NetStatsOutLow%i", i); value.LowPart = (DWORD)GetPrivateProfileInt(L"Statistics", buffer, 0, iniFile.c_str()); c_StatValues.push_back(value.QuadPart); @@ -618,7 +618,7 @@ void CMeasureNet::WriteStats(const std::wstring& iniFile) WCHAR buffer[32]; WCHAR buffer2[64]; - wsprintf(buffer, L"%i", c_StatValues.size() / 2); + _snwprintf_s(buffer, _TRUNCATE, L"%i", (int)c_StatValues.size() / 2); WritePrivateProfileString(L"Statistics", L"NetStatsCount", buffer, iniFile.c_str()); for (size_t i = 0; i < c_StatValues.size() / 2; ++i) @@ -627,22 +627,22 @@ void CMeasureNet::WriteStats(const std::wstring& iniFile) value.QuadPart = c_StatValues[i * 2]; - wsprintf(buffer2, L"NetStatsInHigh%i", i + 1); - wsprintf(buffer, L"%u", value.HighPart); + _snwprintf_s(buffer2, _TRUNCATE, L"NetStatsInHigh%i", (int)i + 1); + _snwprintf_s(buffer, _TRUNCATE, L"%u", value.HighPart); WritePrivateProfileString(L"Statistics", buffer2, buffer, iniFile.c_str()); - wsprintf(buffer2, L"NetStatsInLow%i", i + 1); - wsprintf(buffer, L"%u", value.LowPart); + _snwprintf_s(buffer2, _TRUNCATE, L"NetStatsInLow%i", (int)i + 1); + _snwprintf_s(buffer, _TRUNCATE, L"%u", value.LowPart); WritePrivateProfileString(L"Statistics", buffer2, buffer, iniFile.c_str()); value.QuadPart = c_StatValues[i * 2 + 1]; - wsprintf(buffer2, L"NetStatsOutHigh%i", i + 1); - wsprintf(buffer, L"%u", value.HighPart); + _snwprintf_s(buffer2, _TRUNCATE, L"NetStatsOutHigh%i", (int)i + 1); + _snwprintf_s(buffer, _TRUNCATE, L"%u", value.HighPart); WritePrivateProfileString(L"Statistics", buffer2, buffer, iniFile.c_str()); - wsprintf(buffer2, L"NetStatsOutLow%i", i + 1); - wsprintf(buffer, L"%u", value.LowPart); + _snwprintf_s(buffer2, _TRUNCATE, L"NetStatsOutLow%i", (int)i + 1); + _snwprintf_s(buffer, _TRUNCATE, L"%u", value.LowPart); WritePrivateProfileString(L"Statistics", buffer2, buffer, iniFile.c_str()); } } diff --git a/Library/MeasurePlugin.cpp b/Library/MeasurePlugin.cpp index 70d45fb1..f013eab5 100644 --- a/Library/MeasurePlugin.cpp +++ b/Library/MeasurePlugin.cpp @@ -133,7 +133,7 @@ void CMeasurePlugin::ReadConfig(CConfigParser& parser, const WCHAR* section) { if (CRainmeter::GetDebug()) { - DebugLog(L"Plugin: Unable to load plugin: \"%s\", ErrorCode=%i", m_PluginName.c_str(), err); + DebugLog(L"Plugin: Unable to load plugin: \"%s\", ErrorCode=%u", m_PluginName.c_str(), err); } // Try to load from Rainmeter's folder @@ -149,7 +149,7 @@ void CMeasurePlugin::ReadConfig(CConfigParser& parser, const WCHAR* section) { if (CRainmeter::GetDebug()) { - DebugLog(L"Plugin: Unable to load plugin: \"%s\", ErrorCode=%i", pluginName.c_str(), err); + DebugLog(L"Plugin: Unable to load plugin: \"%s\", ErrorCode=%u", pluginName.c_str(), err); } } } diff --git a/Library/MeasureTime.cpp b/Library/MeasureTime.cpp index 058f985b..984ac553 100644 --- a/Library/MeasureTime.cpp +++ b/Library/MeasureTime.cpp @@ -264,11 +264,11 @@ void CMeasureTime::ReadConfig(CConfigParser& parser, const WCHAR* section) TIME_ZONE_INFORMATION tzi; GetTimeZoneInformation(&tzi); - m_DeltaTime.QuadPart = (LONGLONG)((zone * 3600) - tzi.DaylightBias * 60) * 10000000.0; + m_DeltaTime.QuadPart = (LONGLONG)((zone * 3600) - tzi.DaylightBias * 60) * 10000000; } else { - m_DeltaTime.QuadPart = (LONGLONG)(zone * 3600) * 10000000.0; + m_DeltaTime.QuadPart = (LONGLONG)(zone * 3600) * 10000000; } } } diff --git a/Library/Meter.cpp b/Library/Meter.cpp index d2e5a620..ff24cb04 100644 --- a/Library/Meter.cpp +++ b/Library/Meter.cpp @@ -584,7 +584,7 @@ void CMeter::ReadMeasureNames(CConfigParser& parser, const WCHAR* section, std:: bool loop = true; do { - swprintf(tmpName, L"MeasureName%i", i); + _snwprintf_s(tmpName, _TRUNCATE, L"MeasureName%i", i); std::wstring measure = parser.ReadString(section, tmpName, L""); if (!measure.empty()) { @@ -614,7 +614,7 @@ bool CMeter::ReplaceMeasures(const std::vector& stringValues, std: // Create the actual text (i.e. replace %1, %2, .. with the measure texts) for (size_t i = stringValues.size(); i > 0; --i) { - wsprintf(buffer, L"%%%i", i); + _snwprintf_s(buffer, _TRUNCATE, L"%%%i", (int)i); size_t start = 0; size_t pos = std::wstring::npos; diff --git a/Library/MeterBitmap.cpp b/Library/MeterBitmap.cpp index b8c7fcdf..8f28351a 100644 --- a/Library/MeterBitmap.cpp +++ b/Library/MeterBitmap.cpp @@ -385,7 +385,7 @@ bool CMeterBitmap::Draw(Graphics& graphics) } } -// DebugLog(L"[%i] Value: %f Frame: %i (Transition = %s)", GetTickCount(), m_Value, frame, m_TransitionStartTicks > 0 ? L"true" : L"false"); +// DebugLog(L"[%u] Value: %f Frame: %i (Transition = %s)", GetTickCount(), m_Value, frame, m_TransitionStartTicks > 0 ? L"true" : L"false"); if(bitmap->GetHeight() > bitmap->GetWidth()) { @@ -451,7 +451,7 @@ bool CMeterBitmap::Draw(Graphics& graphics) } } -// DebugLog(L"[%i] Value: %f Frame: %i (Transition = %s)", GetTickCount(), m_Value, frame, m_TransitionStartTicks > 0 ? L"true" : L"false"); +// DebugLog(L"[%u] Value: %f Frame: %i (Transition = %s)", GetTickCount(), m_Value, frame, m_TransitionStartTicks > 0 ? L"true" : L"false"); if(bitmap->GetHeight() > bitmap->GetWidth()) { diff --git a/Library/MeterLine.cpp b/Library/MeterLine.cpp index 59ecdaa7..b0fdd8bd 100644 --- a/Library/MeterLine.cpp +++ b/Library/MeterLine.cpp @@ -114,22 +114,22 @@ void CMeterLine::ReadConfig(const WCHAR* section) { if (i == 0) { - wcscpy(tmpName, L"LineColor"); + wcsncpy_s(tmpName, L"LineColor", _TRUNCATE); } else { - swprintf(tmpName, L"LineColor%i", i + 1); + _snwprintf_s(tmpName, _TRUNCATE, L"LineColor%i", i + 1); } m_Colors.push_back(parser.ReadColor(section, tmpName, Color::White)); if (i == 0) { - wcscpy(tmpName, L"Scale"); + wcsncpy_s(tmpName, L"Scale", _TRUNCATE); } else { - swprintf(tmpName, L"Scale%i", i + 1); + _snwprintf_s(tmpName, _TRUNCATE, L"Scale%i", i + 1); } m_ScaleValues.push_back(parser.ReadFloat(section, tmpName, 1.0)); @@ -138,7 +138,7 @@ void CMeterLine::ReadConfig(const WCHAR* section) { if (i != 0) { - swprintf(tmpName, L"MeasureName%i", i + 1); + _snwprintf_s(tmpName, _TRUNCATE, L"MeasureName%i", i + 1); m_MeasureNames.push_back(parser.ReadString(section, tmpName, L"")); } } diff --git a/Library/MeterString.cpp b/Library/MeterString.cpp index b9d8ab1c..afc68ead 100644 --- a/Library/MeterString.cpp +++ b/Library/MeterString.cpp @@ -673,7 +673,7 @@ void CMeterString::FreeFontCache() std::wstring CMeterString::FontPropertiesToString(FontFamily* fontFamily, REAL size, FontStyle style) { WCHAR ids[128] = {0}; - swprintf(ids, L"%.1f-%i", size, (int)style); + _snwprintf_s(ids, _TRUNCATE, L"%.1f-%i", size, (int)style); if (fontFamily) { diff --git a/Library/MeterWindow.cpp b/Library/MeterWindow.cpp index 4354cac6..537256e0 100644 --- a/Library/MeterWindow.cpp +++ b/Library/MeterWindow.cpp @@ -940,8 +940,8 @@ void CMeterWindow::RunBang(BANGCOMMAND bang, const WCHAR* arg) // Formula read fine if(result != -1) { - TCHAR buffer[256]; - swprintf(buffer, L"%f", value); + WCHAR buffer[256]; + _snwprintf_s(buffer, _TRUNCATE, L"%f", value); const std::wstring& resultString = buffer; @@ -1457,19 +1457,19 @@ void CMeterWindow::ScreenToWindow() if (m_WindowXPercentage == true) { num = 100.0f * (float)pixel / (float)screenw; - swprintf(buffer, L"%.5f%%", num); + _snwprintf_s(buffer, _TRUNCATE, L"%.5f%%", num); } else { - wsprintf(buffer, L"%i", pixel); + _snwprintf_s(buffer, _TRUNCATE, L"%i", pixel); } if (m_WindowXFromRight == true) { - wsprintf(buffer, L"%sR", buffer); + _snwprintf_s(buffer, _TRUNCATE, L"%sR", buffer); } if (m_WindowXScreenDefined == true) { - wsprintf(buffer, L"%s@%i", buffer, m_WindowXScreen); + _snwprintf_s(buffer, _TRUNCATE, L"%s@%i", buffer, m_WindowXScreen); } m_WindowX = buffer; @@ -1498,19 +1498,19 @@ void CMeterWindow::ScreenToWindow() if (m_WindowYPercentage == true) { num = 100.0f * (float)pixel / (float)screenh; - swprintf(buffer, L"%.5f%%", num); + _snwprintf_s(buffer, _TRUNCATE, L"%.5f%%", num); } else { - wsprintf(buffer, L"%i", pixel); + _snwprintf_s(buffer, _TRUNCATE, L"%i", pixel); } if (m_WindowYFromBottom == true) { - wsprintf(buffer, L"%sB", buffer); + _snwprintf_s(buffer, _TRUNCATE, L"%sB", buffer); } if (m_WindowYScreenDefined == true) { - wsprintf(buffer, L"%s@%i", buffer, m_WindowYScreen); + _snwprintf_s(buffer, _TRUNCATE, L"%s@%i", buffer, m_WindowYScreen); } m_WindowY = buffer; } @@ -1575,14 +1575,14 @@ void CMeterWindow::ReadConfig() { double value = parser.ReadFormula(section, L"WindowX", 0.0); WCHAR buffer[32]; - swprintf(buffer, L"%i", (int)value); + _snwprintf_s(buffer, _TRUNCATE, L"%i", (int)value); m_WindowX = buffer; } if (!m_WindowY.empty() && m_WindowY[0] == L'(' && m_WindowY[m_WindowY.size() - 1] == L')') { double value = parser.ReadFormula(section, L"WindowY", 0.0); WCHAR buffer[32]; - swprintf(buffer, L"%i", (int)value); + _snwprintf_s(buffer, _TRUNCATE, L"%i", (int)value); m_WindowY = buffer; } @@ -1663,28 +1663,28 @@ void CMeterWindow::WriteConfig() WritePrivateProfileString(section, L"WindowY", m_WindowY.c_str(), iniFile.c_str()); } - wsprintf(buffer, L"%i", m_AlphaValue); + _snwprintf_s(buffer, _TRUNCATE, L"%i", m_AlphaValue); WritePrivateProfileString(section, L"AlphaValue", buffer, iniFile.c_str()); - wsprintf(buffer, L"%i", m_FadeDuration); + _snwprintf_s(buffer, _TRUNCATE, L"%i", m_FadeDuration); WritePrivateProfileString(section, L"FadeDuration", buffer, iniFile.c_str()); - wsprintf(buffer, L"%i", m_ClickThrough); + _snwprintf_s(buffer, _TRUNCATE, L"%i", m_ClickThrough); WritePrivateProfileString(section, L"ClickThrough", buffer, iniFile.c_str()); - wsprintf(buffer, L"%i", m_WindowDraggable); + _snwprintf_s(buffer, _TRUNCATE, L"%i", m_WindowDraggable); WritePrivateProfileString(section, L"Draggable", buffer, iniFile.c_str()); - wsprintf(buffer, L"%i", m_WindowHide); + _snwprintf_s(buffer, _TRUNCATE, L"%i", m_WindowHide); WritePrivateProfileString(section, L"HideOnMouseOver", buffer, iniFile.c_str()); - wsprintf(buffer, L"%i", m_SavePosition); + _snwprintf_s(buffer, _TRUNCATE, L"%i", m_SavePosition); WritePrivateProfileString(section, L"SavePosition", buffer, iniFile.c_str()); - wsprintf(buffer, L"%i", m_SnapEdges); + _snwprintf_s(buffer, _TRUNCATE, L"%i", m_SnapEdges); WritePrivateProfileString(section, L"SnapEdges", buffer, iniFile.c_str()); - wsprintf(buffer, L"%i", m_KeepOnScreen); + _snwprintf_s(buffer, _TRUNCATE, L"%i", m_KeepOnScreen); WritePrivateProfileString(section, L"KeepOnScreen", buffer, iniFile.c_str()); - wsprintf(buffer, L"%i", m_AutoSelectScreen); + _snwprintf_s(buffer, _TRUNCATE, L"%i", m_AutoSelectScreen); WritePrivateProfileString(section, L"AutoSelectScreen", buffer, iniFile.c_str()); - wsprintf(buffer, L"%i", m_WindowZPosition); + _snwprintf_s(buffer, _TRUNCATE, L"%i", m_WindowZPosition); WritePrivateProfileString(section, L"AlwaysOnTop", buffer, iniFile.c_str()); } } @@ -1732,11 +1732,11 @@ bool CMeterWindow::ReadSkin() WCHAR buffer[128]; if (appVersion % 1000 != 0) { - wsprintf(buffer, L"%i.%i.%i", appVersion / 1000000, (appVersion / 1000) % 1000, appVersion % 1000); + _snwprintf_s(buffer, _TRUNCATE, L"%i.%i.%i", appVersion / 1000000, (appVersion / 1000) % 1000, appVersion % 1000); } else { - wsprintf(buffer, L"%i.%i", appVersion / 1000000, (appVersion / 1000) % 1000); + _snwprintf_s(buffer, _TRUNCATE, L"%i.%i", appVersion / 1000000, (appVersion / 1000) % 1000); } std::wstring text = L"The skin \"" + m_SkinName; @@ -1838,7 +1838,7 @@ bool CMeterWindow::ReadSkin() bool loop = true; do { - swprintf(tmpName, L"LocalFont%i", i); + _snwprintf_s(tmpName, _TRUNCATE, L"LocalFont%i", i); localFont = m_Parser.ReadString(L"Rainmeter", tmpName, L""); // There is a key called LocalFont%i if (!localFont.empty()) diff --git a/Library/Rainmeter.cpp b/Library/Rainmeter.cpp index 6f06e77d..3f30132a 100644 --- a/Library/Rainmeter.cpp +++ b/Library/Rainmeter.cpp @@ -191,6 +191,169 @@ LPCTSTR ReadConfigString(LPCTSTR section, LPCTSTR key, LPCTSTR defValue) return NULL; } +/* +** PluginBridge +** +** Receives a command and data from a plugin and returns a result. Used by plugins. +** +** Revision history: +** 2010.12.13 Peter Souza IV / psouza4 initial creation +** +*/ +LPCTSTR PluginBridge(LPCTSTR _sCommand, LPCTSTR _sData) +{ + if (Rainmeter) + { + static std::wstring result; + + if (_sCommand == NULL) _sCommand = L""; + if (_sData == NULL) _sData = L""; + + std::wstring sCommand = _sCommand; + std::wstring sData = _sData; + std::transform(sCommand.begin(), sCommand.end(), sCommand.begin(), ::towlower); + + // Command GetConfig + // Data unquoted full path and filename given to the plugin on initialize + // (note: this is CaSe-SeNsItIvE!) + // Execution none + // Result the config name if found or a blank string if not + if (sCommand == L"getconfig") + { + // returns the config name, lookup by INI file + + CMeterWindow *meterWindow = Rainmeter->GetMeterWindowByINI(sData); + if (meterWindow) + { + result = meterWindow->GetSkinName(); + return result.c_str(); + } + + return L""; + } + + // Command SkinAuthor + // Data the config name + // Execution none + // Result the skin author of the skin name or 'error' if the config name + // was not found + if (sCommand == L"skinauthor") + { + std::vector subStrings = CRainmeter::ParseString(_sData); + + if (subStrings.size() >= 1) + { + std::wstring config = subStrings[0]; + + CMeterWindow *meterWindow = Rainmeter->GetMeterWindow(config); + if (meterWindow) + { + result = meterWindow->GetSkinAuthor(); + return result.c_str(); + } + } + + return L"error"; + } + + // Command GetVariable + // Data [the config name] + // Execution none + // Result the value of the variable + if (sCommand == L"getvariable") + { + std::vector subStrings = CRainmeter::ParseString(_sData); + + if (subStrings.size() >= 2) + { + std::wstring config = subStrings[0]; + + CMeterWindow *meterWindow = Rainmeter->GetMeterWindow(config); + if (meterWindow) + { + std::wstring variable = subStrings[1]; + std::wstring result_from_parser; + + if (meterWindow->GetParser().GetVariable(variable, result_from_parser)) + { + result = result_from_parser; + return result.c_str(); + } + } + } + + return L""; + } + + // Command SetVariable + // Data [the config name] [variable data] + // Execution the indicated variable is updated + // Result 'success' if the config was found, 'error' otherwise + if (sCommand == L"setvariable") + { + std::vector subStrings = CRainmeter::ParseString(_sData); + + if (subStrings.size() >= 2) + { + std::wstring config = subStrings[0]; + std::wstring arguments; + + for (size_t i = 1; i < subStrings.size(); ++i) + { + if (i != 1) arguments += L" "; + arguments += subStrings[i]; + } + + CMeterWindow *meterWindow = Rainmeter->GetMeterWindow(config); + if (meterWindow) + { + meterWindow->RunBang(BANG_SETVARIABLE, arguments.c_str()); + return L"success"; + } + } + + /* + result = L"er1/"; + result += subStrings[0]; + result += L"/"; + TCHAR x[100]; + _snwprintf_s(x, _TRUNCATE, L"%d", subStrings.size()); + result += x; + return result.c_str(); + */ + return L"error"; + } + + // Command GetWindow + // Data [the config name] + // Execution none + // Result the HWND to the specified config window if found, 'error' otherwise + if (sCommand == L"getwindow") + { + std::vector subStrings = CRainmeter::ParseString(_sData); + + if (subStrings.size() >= 1) + { + std::wstring config = subStrings[0]; + + CMeterWindow *meterWindow = Rainmeter->GetMeterWindow(config); + if (meterWindow) + { + TCHAR buf1[100]; + _snwprintf_s(buf1, _TRUNCATE, L"%lu", meterWindow->GetWindow()); + result = buf1; + return result.c_str(); + } + } + return L"error"; + } + + return L"noop"; + } + + return L"error:no rainmeter!"; +} + /* ** BangWithArgs ** @@ -487,11 +650,11 @@ void RainmeterActivateConfig(HWND, const char* arg) { const std::vector& configs = Rainmeter->GetAllConfigs(); - for (size_t i = 0; i < configs.size(); ++i) + for (int i = 0; i < (int)configs.size(); ++i) { if (_wcsicmp(configs[i].config.c_str(), subStrings[0].c_str()) == 0) { - for (size_t j = 0; j < configs[i].iniFiles.size(); ++j) + for (int j = 0; j < (int)configs[i].iniFiles.size(); ++j) { if (_wcsicmp(configs[i].iniFiles[j].c_str(), subStrings[1].c_str()) == 0) { @@ -1039,8 +1202,11 @@ void RainmeterWriteKeyValue(HWND, const char* arg) return; } - if (_wcsnicmp(iniFile.c_str(), Rainmeter->GetSkinPath().c_str(), Rainmeter->GetSkinPath().size()) != 0 && - _wcsnicmp(iniFile.c_str(), Rainmeter->GetPath().c_str(), Rainmeter->GetPath().size()) != 0) + const std::wstring& skinPath = Rainmeter->GetSkinPath(); + const std::wstring settingsPath = Rainmeter->GetSettingsPath(); + + if (_wcsnicmp(iniFile.c_str(), skinPath.c_str(), skinPath.size()) != 0 && + _wcsnicmp(iniFile.c_str(), settingsPath.c_str(), settingsPath.size()) != 0) { DebugLog(L"!RainmeterWriteKeyValue: Illegal path outside of Rainmeter directories: %s", iniFile.c_str()); return; @@ -1101,8 +1267,8 @@ void RainmeterWriteKeyValue(HWND, const char* arg) // Formula read fine if (formula != -1) { - TCHAR buffer[256]; - swprintf(buffer, L"%f", value); + WCHAR buffer[256]; + _snwprintf_s(buffer, _TRUNCATE, L"%f", value); const std::wstring& resultString = buffer; @@ -1916,7 +2082,7 @@ bool CRainmeter::DeactivateConfig(CMeterWindow* meterWindow, int configIndex) void CRainmeter::WriteActive(const std::wstring& config, int iniIndex) { WCHAR buffer[32]; - wsprintf(buffer, L"%i", iniIndex + 1); + _snwprintf_s(buffer, _TRUNCATE, L"%i", iniIndex + 1); WritePrivateProfileString(config.c_str(), L"Active", buffer, m_IniFile.c_str()); } @@ -2026,11 +2192,10 @@ CMeterWindow* CRainmeter::GetMeterWindowByINI(const std::wstring& ini_searching) for (; iter != m_Meters.end(); ++iter) { - std::wstring ini_current = L""; - ini_current += ((*iter).second->GetSkinPath()); // includes trailing backslash - ini_current += ((*iter).second->GetSkinName()); + std::wstring ini_current = (*iter).second->GetSkinPath(); + ini_current += (*iter).second->GetSkinName(); ini_current += L"\\"; - ini_current += ((*iter).second->GetSkinIniFile()); + ini_current += (*iter).second->GetSkinIniFile(); if (_wcsicmp(ini_current.c_str(), ini_searching.c_str()) == 0) { @@ -2872,7 +3037,7 @@ void CRainmeter::ReadGeneralSettings(const std::wstring& iniFile) for (UINT i = 1; i <= CSystem::GetMonitorCount(); ++i) { WCHAR buffer[64]; - wsprintf(buffer, L"DesktopWorkArea@%i", i); + _snwprintf_s(buffer, _TRUNCATE, L"DesktopWorkArea@%i", i); area = parser.ReadString(L"Rainmeter", buffer, L""); if (!area.empty()) { @@ -2915,7 +3080,7 @@ void CRainmeter::ReadGeneralSettings(const std::wstring& iniFile) } } - for (size_t i = 0; i < m_ConfigStrings.size(); ++i) + for (int i = 0; i < (int)m_ConfigStrings.size(); ++i) { int active = parser.ReadInt(m_ConfigStrings[i].config.c_str(), L"Active", 0); @@ -2936,13 +3101,13 @@ void CRainmeter::ReadGeneralSettings(const std::wstring& iniFile) */ bool CRainmeter::SetActiveConfig(const std::wstring& skinName, const std::wstring& skinIni) { - for (size_t i = 0; i < m_ConfigStrings.size(); ++i) + for (int i = 0; i < (int)m_ConfigStrings.size(); ++i) { m_ConfigStrings[i].active = 0; // Disable all other configs if (skinName == m_ConfigStrings[i].config) { - for (size_t j = 0; j < m_ConfigStrings[i].iniFiles.size(); ++j) + for (int j = 0; j < (int)m_ConfigStrings[i].iniFiles.size(); ++j) { if (skinIni == m_ConfigStrings[i].iniFiles[j]) { @@ -2991,13 +3156,13 @@ void CRainmeter::RefreshAll() // Verify whether the cached information is valid int found = 0; std::wstring skinConfig = mw->GetSkinName(); - for (size_t i = 0; i < m_ConfigStrings.size(); ++i) + for (int i = 0; i < (int)m_ConfigStrings.size(); ++i) { if (_wcsicmp(skinConfig.c_str(), m_ConfigStrings[i].config.c_str()) == 0) { found = 1; std::wstring skinIniFile = mw->GetSkinIniFile(); - for (size_t j = 0; j < m_ConfigStrings[i].iniFiles.size(); ++j) + for (int j = 0; j < (int)m_ConfigStrings[i].iniFiles.size(); ++j) { if (_wcsicmp(skinIniFile.c_str(), m_ConfigStrings[i].iniFiles[j].c_str()) == 0) { @@ -3080,7 +3245,7 @@ void CRainmeter::UpdateDesktopWorkArea(bool reset) { format += L" => FAIL."; } - DebugLog(format.c_str(), i + 1, r.left, r.top, r.right, r.bottom, r.right - r.left, r.bottom - r.top); + DebugLog(format.c_str(), (int)i + 1, r.left, r.top, r.right, r.bottom, r.right - r.left, r.bottom - r.top); } } changed = true; @@ -3094,7 +3259,7 @@ void CRainmeter::UpdateDesktopWorkArea(bool reset) if (m_OldDesktopWorkAreas.empty()) { // Store old work areas for changing them back - for (UINT i = 0; i < CSystem::GetMonitorCount(); ++i) + for (size_t i = 0; i < CSystem::GetMonitorCount(); ++i) { m_OldDesktopWorkAreas.push_back(monitors[i].work); } @@ -3146,7 +3311,7 @@ void CRainmeter::UpdateDesktopWorkArea(bool reset) if (i != 0) { WCHAR buffer[64]; - wsprintf(buffer, L"@%i", i); + _snwprintf_s(buffer, _TRUNCATE, L"@%i", i); format += buffer; } format += L": L=%i, T=%i, R=%i, B=%i (W=%i, H=%i)"; @@ -3400,7 +3565,7 @@ HMENU CRainmeter::CreateConfigMenu(std::vector& configMenuData) { configMenu = CreatePopupMenu(); - for (size_t i = 0; i < configMenuData.size(); ++i) + for (int i = 0; i < (int)configMenuData.size(); ++i) { if (configMenuData[i].index == -1) { @@ -3587,13 +3752,13 @@ HMENU CRainmeter::CreateSkinMenu(CMeterWindow* meterWindow, int index, HMENU con ChangeSkinIndex(skinMenu, index); // Add the variants menu - for (size_t i = 0; i < m_ConfigStrings.size(); ++i) + for (int i = 0; i < (int)m_ConfigStrings.size(); ++i) { const CONFIG& config = m_ConfigStrings[i]; if (_wcsicmp(config.config.c_str(), skinName.c_str()) == 0) { HMENU variantsMenu = CreatePopupMenu(); - for (size_t j = 0; j < config.iniFiles.size(); ++j) + for (int j = 0; j < (int)config.iniFiles.size(); ++j) { InsertMenu(variantsMenu, j, MF_BYPOSITION, config.commands[j], config.iniFiles[j].c_str()); @@ -3656,10 +3821,10 @@ void CRainmeter::CreateMonitorMenu(HMENU monitorMenu, CMeterWindow* meterWindow) const MULTIMONITOR_INFO& multimonInfo = CSystem::GetMultiMonitorInfo(); const std::vector& monitors = multimonInfo.monitors; - for (size_t i = 0; i < monitors.size(); ++i) + for (int i = 0; i < (int)monitors.size(); ++i) { WCHAR buffer[64]; - wsprintf(buffer, L"@%i: ", i + 1); + _snwprintf_s(buffer, _TRUNCATE, L"@%i: ", i + 1); std::wstring item = buffer; size_t len = wcslen(monitors[i].monitorName); @@ -3676,7 +3841,7 @@ void CRainmeter::CreateMonitorMenu(HMENU monitorMenu, CMeterWindow* meterWindow) UINT pos = i + 3; InsertMenu(monitorMenu, pos, MF_BYPOSITION, ID_MONITOR_FIRST + i + 1, item.c_str()); - if (screenDefined && screenIndex == (int)i + 1) + if (screenDefined && screenIndex == i + 1) { CheckMenuItem(monitorMenu, pos, MF_BYPOSITION | MF_CHECKED); } @@ -3909,168 +4074,3 @@ void CRainmeter::ExpandEnvironmentVariables(std::wstring& strPath) } } } - -/* -** PluginBridge -** -** Receives a command and data from a plugin and returns a result. Used by plugins. -** -** Revision history: -** 2010.12.13 Peter Souza IV / psouza4 initial creation -** -*/ -LPCTSTR PluginBridge(LPCTSTR _sCommand, LPCTSTR _sData) -{ - if (Rainmeter) - { - static std::wstring result; - std::wstring sCommand = _sCommand; - std::wstring sData = _sData; - std::transform(sCommand.begin(), sCommand.end(), sCommand.begin(), ::towlower); - - // Command GetConfig - // Data unquoted full path and filename given to the plugin on initialize - // (note: this is CaSe-SeNsItIvE!) - // Execution none - // Result the config name if found or a blank string if not - if (sCommand == L"getconfig") - { - // returns the config name, lookup by INI file - - CMeterWindow *meterWindow = Rainmeter->GetMeterWindowByINI(sData); - if (meterWindow) - { - result = meterWindow->GetSkinName(); - return result.c_str(); - } - - return L""; - } - - // Command SkinAuthor - // Data the config name - // Execution none - // Result the skin author of the skin name or 'error' if the config name - // was not found - if (sCommand == L"skinauthor") - { - std::vector subStrings = CRainmeter::ParseString(_sData); - std::wstring config; - - if (subStrings.size() >= 1) - { - config = subStrings[0]; - - CMeterWindow *meterWindow = Rainmeter->GetMeterWindow(config); - if (meterWindow) - { - result = meterWindow->GetSkinAuthor(); - return result.c_str(); - } - } - - return L"error"; - } - - - // Command GetVariable - // Data [the config name] - // Execution none - // Result the value of the variable - if (sCommand == L"getvariable") - { - std::vector subStrings = CRainmeter::ParseString(_sData); - std::wstring config; - std::wstring variable; - - if (subStrings.size() >= 2) - { - config = subStrings[0]; - variable = subStrings[1]; - - CMeterWindow *meterWindow = Rainmeter->GetMeterWindow(config); - if (meterWindow) - { - std::wstring result_from_parser = L""; - - if (meterWindow->GetParser().GetVariable(variable, result_from_parser)) - { - result = result_from_parser; - return result.c_str(); - } - } - } - - return L""; - } - - // Command SetVariable - // Data [the config name] [variable data] - // Execution the indicated variable is updated - // Result 'success' if the config was found, 'error' otherwise - if (sCommand == L"setvariable") - { - std::vector subStrings = CRainmeter::ParseString(_sData); - std::wstring config; - std::wstring arguments; - - if (subStrings.size() >= 2) - { - config = subStrings[0]; - - for (size_t i = 1; i < subStrings.size(); ++i) - { - if (i != 1) arguments += L" "; - arguments += subStrings[i]; - } - - CMeterWindow *meterWindow = Rainmeter->GetMeterWindow(config); - if (meterWindow) - { - meterWindow->RunBang(BANG_SETVARIABLE, arguments.c_str()); - return L"success"; - } - } - - /* - result = L"er1/"; - result += subStrings[0]; - result += L"/"; - TCHAR x[100]; - swprintf(x, L"%d", subStrings.size()); - result += x; - return result.c_str(); - */ - return L"error"; - } - - // Command GetWindow - // Data [the config name] - // Execution none - // Result the HWND to the specified config window if found, 'error' otherwise - if (sCommand == L"getwindow") - { - std::vector subStrings = CRainmeter::ParseString(_sData); - std::wstring config; - - if (subStrings.size() >= 1) - { - config = subStrings[0]; - - CMeterWindow *meterWindow = Rainmeter->GetMeterWindow(config); - if (meterWindow) - { - TCHAR buf1[100]; - swprintf(buf1, L"%lu", meterWindow->GetWindow()); - result = buf1; - return result.c_str(); - } - } - return L"error"; - } - - return L"noop"; - } - - return L"error:no rainmeter!"; -} diff --git a/Library/System.cpp b/Library/System.cpp index c1e88c7b..9e816366 100644 --- a/Library/System.cpp +++ b/Library/System.cpp @@ -173,7 +173,7 @@ BOOL CALLBACK MyInfoEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonit { LSLog(LOG_DEBUG, APPNAME, info.szDevice); DebugLog(L" Flags : %s(0x%08X)", (info.dwFlags & MONITORINFOF_PRIMARY) ? L"PRIMARY " : L"", info.dwFlags); - DebugLog(L" Handle : 0x%08X", hMonitor); + DebugLog(L" Handle : 0x%p", hMonitor); DebugLog(L" ScrArea : L=%i, T=%i, R=%i, B=%i (W=%i, H=%i)", lprcMonitor->left, lprcMonitor->top, lprcMonitor->right, lprcMonitor->bottom, lprcMonitor->right - lprcMonitor->left, lprcMonitor->bottom - lprcMonitor->top); @@ -205,7 +205,7 @@ BOOL CALLBACK MyInfoEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonit monitor.screen = *lprcMonitor; monitor.work = info.rcWork; - wcsncpy(monitor.deviceName, info.szDevice, 32); // E.g. "\\.\DISPLAY1" + wcsncpy_s(monitor.deviceName, info.szDevice, _TRUNCATE); // E.g. "\\.\DISPLAY1" // Get the monitor name (E.g. "Generic Non-PnP Monitor") DISPLAY_DEVICE ddm = {0}; @@ -215,7 +215,7 @@ BOOL CALLBACK MyInfoEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonit { if (ddm.StateFlags & DISPLAY_DEVICE_ACTIVE && ddm.StateFlags & DISPLAY_DEVICE_ATTACHED) { - wcsncpy(monitor.monitorName, ddm.DeviceString, 128); + wcsncpy_s(monitor.monitorName, ddm.DeviceString, _TRUNCATE); break; } } @@ -332,7 +332,7 @@ void CSystem::SetMultiMonitorInfo() MONITOR_INFO monitor = {0}; monitor.handle = NULL; - wcsncpy(monitor.deviceName, dd.DeviceName, 32); // E.g. "\\.\DISPLAY1" + wcsncpy_s(monitor.deviceName, dd.DeviceName, _TRUNCATE); // E.g. "\\.\DISPLAY1" // Get the monitor name (E.g. "Generic Non-PnP Monitor") DISPLAY_DEVICE ddm = {0}; @@ -342,7 +342,7 @@ void CSystem::SetMultiMonitorInfo() { if (ddm.StateFlags & DISPLAY_DEVICE_ACTIVE && ddm.StateFlags & DISPLAY_DEVICE_ATTACHED) { - wcsncpy(monitor.monitorName, ddm.DeviceString, 128); + wcsncpy_s(monitor.monitorName, ddm.DeviceString, _TRUNCATE); if (logging) { @@ -372,7 +372,7 @@ void CSystem::SetMultiMonitorInfo() if (logging) { - DebugLog(L" Handle : 0x%08X", monitor.handle); + DebugLog(L" Handle : 0x%p", monitor.handle); } } @@ -448,7 +448,7 @@ void CSystem::SetMultiMonitorInfo() c_Monitors.useEnumDisplayMonitors = false; MONITOR_INFO monitor = {0}; - wcscpy(monitor.deviceName, L"DUMMY"); + wcsncpy_s(monitor.deviceName, L"DUMMY", _TRUNCATE); POINT pos = {0, 0}; monitor.handle = MonitorFromPoint(pos, MONITOR_DEFAULTTOPRIMARY); monitor.screen.left = 0; @@ -487,7 +487,7 @@ void CSystem::SetMultiMonitorInfo() } LSLog(LOG_DEBUG, APPNAME, method.c_str()); - DebugLog(L"* MONITORS: Count=%i, Primary=@%i", monitors.size(), c_Monitors.primary); + DebugLog(L"* MONITORS: Count=%i, Primary=@%i", (int)monitors.size(), c_Monitors.primary); LSLog(LOG_DEBUG, APPNAME, L"@0: Virtual screen"); DebugLog(L" L=%i, T=%i, R=%i, B=%i (W=%i, H=%i)", c_Monitors.vsL, c_Monitors.vsT, c_Monitors.vsL + c_Monitors.vsW, c_Monitors.vsT + c_Monitors.vsH, @@ -497,14 +497,14 @@ void CSystem::SetMultiMonitorInfo() { if (monitors[i].active) { - DebugLog(L"@%i: %s (active), MonitorName: %s", i + 1, monitors[i].deviceName, monitors[i].monitorName); + DebugLog(L"@%i: %s (active), MonitorName: %s", (int)i + 1, monitors[i].deviceName, monitors[i].monitorName); DebugLog(L" L=%i, T=%i, R=%i, B=%i (W=%i, H=%i)", monitors[i].screen.left, monitors[i].screen.top, monitors[i].screen.right, monitors[i].screen.bottom, monitors[i].screen.right - monitors[i].screen.left, monitors[i].screen.bottom - monitors[i].screen.top); } else { - DebugLog(L"@%i: %s (inactive), MonitorName: %s", i + 1, monitors[i].deviceName, monitors[i].monitorName); + DebugLog(L"@%i: %s (inactive), MonitorName: %s", (int)i + 1, monitors[i].deviceName, monitors[i].monitorName); } } LSLog(LOG_DEBUG, APPNAME, L"------------------------------"); @@ -539,7 +539,7 @@ void CSystem::UpdateWorkareaInfo() if (CRainmeter::GetDebug()) { DebugLog(L"WorkArea@%i : L=%i, T=%i, R=%i, B=%i (W=%i, H=%i)", - i + 1, + (int)i + 1, info.rcWork.left, info.rcWork.top, info.rcWork.right, info.rcWork.bottom, info.rcWork.right - info.rcWork.left, info.rcWork.bottom - info.rcWork.top); } @@ -684,7 +684,7 @@ BOOL CALLBACK MyEnumWindowsProc(HWND hwnd, LPARAM lParam) ZPOSITION zPos = Window->GetWindowZPosition(); if (zPos == ZPOSITION_ONDESKTOP || zPos == ZPOSITION_ONBOTTOM) { - if (logging) DebugLog(L"+ [%c] 0x%08X : %s (Name: \"%s\", zPos=%i)", IsWindowVisible(hwnd) ? L'V' : L'H', hwnd, className, Window->GetSkinName().c_str(), (int)zPos); + if (logging) DebugLog(L"+ [%c] 0x%p : %s (Name: \"%s\", zPos=%i)", IsWindowVisible(hwnd) ? L'V' : L'H', hwnd, className, Window->GetSkinName().c_str(), (int)zPos); if (lParam) { @@ -693,12 +693,12 @@ BOOL CALLBACK MyEnumWindowsProc(HWND hwnd, LPARAM lParam) } else { - if (logging) DebugLog(L"- [%c] 0x%08X : %s (Name: \"%s\", zPos=%i)", IsWindowVisible(hwnd) ? L'V' : L'H', hwnd, className, Window->GetSkinName().c_str(), (int)zPos); + if (logging) DebugLog(L"- [%c] 0x%p : %s (Name: \"%s\", zPos=%i)", IsWindowVisible(hwnd) ? L'V' : L'H', hwnd, className, Window->GetSkinName().c_str(), (int)zPos); } } else { - if (logging) DebugLog(L" [%c] 0x%08X : %s", IsWindowVisible(hwnd) ? L'V' : L'H', hwnd, className); + if (logging) DebugLog(L" [%c] 0x%p : %s", IsWindowVisible(hwnd) ? L'V' : L'H', hwnd, className); } return TRUE; @@ -789,7 +789,7 @@ void CSystem::PrepareHelperWindow(HWND WorkerW) { if (logging) { - DebugLog(L"System: HelperWindow: hwnd=0x%08X (WorkerW=0x%08X), hwndInsertAfter=0x%08X (\"%s\" %s) - %s", + DebugLog(L"System: HelperWindow: hwnd=0x%p (WorkerW=0x%p), hwndInsertAfter=0x%p (\"%s\" %s) - %s", c_HelperWindow, WorkerW, hwnd, windowText, className, (GetWindowLong(c_HelperWindow, GWL_EXSTYLE) & WS_EX_TOPMOST) ? L"TOPMOST" : L"NORMAL"); } return; @@ -797,7 +797,7 @@ void CSystem::PrepareHelperWindow(HWND WorkerW) if (logging) { - DebugLog(L"System: HelperWindow: hwnd=0x%08X (WorkerW=0x%08X), hwndInsertAfter=0x%08X (\"%s\" %s) - FAILED", + DebugLog(L"System: HelperWindow: hwnd=0x%p (WorkerW=0x%p), hwndInsertAfter=0x%p (\"%s\" %s) - FAILED", c_HelperWindow, WorkerW, hwnd, windowText, className); } } @@ -805,7 +805,7 @@ void CSystem::PrepareHelperWindow(HWND WorkerW) if (logging) { - DebugLog(L"System: HelperWindow: hwnd=0x%08X (WorkerW=0x%08X), hwndInsertAfter=HWND_TOPMOST - %s", + DebugLog(L"System: HelperWindow: hwnd=0x%p (WorkerW=0x%p), hwndInsertAfter=HWND_TOPMOST - %s", c_HelperWindow, WorkerW, (GetWindowLong(c_HelperWindow, GWL_EXSTYLE) & WS_EX_TOPMOST) ? L"TOPMOST" : L"NORMAL"); } } @@ -816,7 +816,7 @@ void CSystem::PrepareHelperWindow(HWND WorkerW) if (logging) { - DebugLog(L"System: HelperWindow: hwnd=0x%08X (WorkerW=0x%08X), hwndInsertAfter=HWND_BOTTOM - %s", + DebugLog(L"System: HelperWindow: hwnd=0x%p (WorkerW=0x%p), hwndInsertAfter=HWND_BOTTOM - %s", c_HelperWindow, WorkerW, (GetWindowLong(c_HelperWindow, GWL_EXSTYLE) & WS_EX_TOPMOST) ? L"TOPMOST" : L"NORMAL"); } } diff --git a/Library/TrayWindow.cpp b/Library/TrayWindow.cpp index 1bfb33e8..a9c49879 100644 --- a/Library/TrayWindow.cpp +++ b/Library/TrayWindow.cpp @@ -124,7 +124,7 @@ BOOL CTrayWindow::AddTrayIcon() tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; tnid.uCallbackMessage = WM_NOTIFYICON; tnid.hIcon = m_TrayIcon; - lstrcpyn(tnid.szTip, L"Rainmeter", sizeof(tnid.szTip)); + wcsncpy_s(tnid.szTip, L"Rainmeter", _TRUNCATE); res = Shell_NotifyIcon(NIM_ADD, &tnid); } @@ -338,7 +338,7 @@ void CTrayWindow::ReadConfig(CConfigParser& parser) do { WCHAR buffer[MAX_PATH]; - wsprintf(buffer, imageName.c_str(), count++); + _snwprintf_s(buffer, _TRUNCATE, imageName.c_str(), count++); hIcon = (HICON)LoadImage(NULL, buffer, IMAGE_ICON, TRAYICON_SIZE, TRAYICON_SIZE, LR_LOADFROMFILE); if (hIcon) m_TrayIcons.push_back(hIcon); @@ -492,9 +492,9 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA // Check which config was selected const std::vector& configs = Rainmeter->GetAllConfigs(); - for (size_t i = 0; i < configs.size(); ++i) + for (int i = 0; i < (int)configs.size(); ++i) { - for (size_t j = 0; j < configs[i].commands.size(); ++j) + for (int j = 0; j < (int)configs[i].commands.size(); ++j) { if (configs[i].commands[j] == wParam) { @@ -600,7 +600,7 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA const std::wstring& path = Rainmeter->GetSkinPath(); cds.dwData = RAINMETER_QUERY_ID_SKINS_PATH; - cds.cbData = (path.size() + 1) * sizeof(wchar_t); + cds.cbData = (DWORD)((path.size() + 1) * sizeof(wchar_t)); cds.lpData = (LPVOID) path.c_str(); SendMessage((HWND)lParam, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds); @@ -612,7 +612,7 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA std::wstring path = Rainmeter->GetSettingsPath(); cds.dwData = RAINMETER_QUERY_ID_SETTINGS_PATH; - cds.cbData = (path.size() + 1) * sizeof(wchar_t); + cds.cbData = (DWORD)((path.size() + 1) * sizeof(wchar_t)); cds.lpData = (LPVOID) path.c_str(); SendMessage((HWND)lParam, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds); @@ -624,7 +624,7 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA const std::wstring& path = Rainmeter->GetPluginPath(); cds.dwData = RAINMETER_QUERY_ID_PLUGINS_PATH; - cds.cbData = (path.size() + 1) * sizeof(wchar_t); + cds.cbData = (DWORD)((path.size() + 1) * sizeof(wchar_t)); cds.lpData = (LPVOID) path.c_str(); SendMessage((HWND)lParam, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds); @@ -636,7 +636,7 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA const std::wstring& path = Rainmeter->GetPath(); cds.dwData = RAINMETER_QUERY_ID_PROGRAM_PATH; - cds.cbData = (path.size() + 1) * sizeof(wchar_t); + cds.cbData = (DWORD)((path.size() + 1) * sizeof(wchar_t)); cds.lpData = (LPVOID) path.c_str(); SendMessage((HWND)lParam, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds); @@ -648,7 +648,7 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA const std::wstring& path = Rainmeter->GetLogFile(); cds.dwData = RAINMETER_QUERY_ID_LOG_PATH; - cds.cbData = (path.size() + 1) * sizeof(wchar_t); + cds.cbData = (DWORD)((path.size() + 1) * sizeof(wchar_t)); cds.lpData = (LPVOID) path.c_str(); SendMessage((HWND)lParam, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds); @@ -660,7 +660,7 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA const std::wstring& editor = Rainmeter->GetConfigEditor(); cds.dwData = RAINMETER_QUERY_ID_CONFIG_EDITOR; - cds.cbData = (editor.size() + 1) * sizeof(wchar_t); + cds.cbData = (DWORD)((editor.size() + 1) * sizeof(wchar_t)); cds.lpData = (LPVOID) editor.c_str(); SendMessage((HWND)lParam, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds); @@ -672,7 +672,7 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA std::wstring commandline = Rainmeter->GetCommandLine(); cds.dwData = RAINMETER_QUERY_ID_COMMAND_LINE; - cds.cbData = (commandline.size() + 1) * sizeof(wchar_t); + cds.cbData = (DWORD)((commandline.size() + 1) * sizeof(wchar_t)); cds.lpData = (LPVOID) commandline.c_str(); SendMessage((HWND)lParam, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds); @@ -700,7 +700,7 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA const std::wstring& date = Rainmeter->GetStatsDate(); cds.dwData = RAINMETER_QUERY_ID_STATS_DATE; - cds.cbData = (date.size() + 1) * sizeof(wchar_t); + cds.cbData = (DWORD)((date.size() + 1) * sizeof(wchar_t)); cds.lpData = (LPVOID) date.c_str(); SendMessage((HWND)lParam, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds); @@ -712,7 +712,7 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA const std::wstring& tray = Rainmeter->GetTrayExecuteL(); cds.dwData = RAINMETER_QUERY_ID_TRAY_EX_L; - cds.cbData = (tray.size() + 1) * sizeof(wchar_t); + cds.cbData = (DWORD)((tray.size() + 1) * sizeof(wchar_t)); cds.lpData = (LPVOID) tray.c_str(); SendMessage((HWND)lParam, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds); @@ -724,7 +724,7 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA const std::wstring& tray = Rainmeter->GetTrayExecuteR(); cds.dwData = RAINMETER_QUERY_ID_TRAY_EX_R; - cds.cbData = (tray.size() + 1) * sizeof(wchar_t); + cds.cbData = (DWORD)((tray.size() + 1) * sizeof(wchar_t)); cds.lpData = (LPVOID) tray.c_str(); SendMessage((HWND)lParam, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds); @@ -736,7 +736,7 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA const std::wstring& tray = Rainmeter->GetTrayExecuteM(); cds.dwData = RAINMETER_QUERY_ID_TRAY_EX_M; - cds.cbData = (tray.size() + 1) * sizeof(wchar_t); + cds.cbData = (DWORD)((tray.size() + 1) * sizeof(wchar_t)); cds.lpData = (LPVOID) tray.c_str(); SendMessage((HWND)lParam, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds); @@ -748,7 +748,7 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA const std::wstring& tray = Rainmeter->GetTrayExecuteDL(); cds.dwData = RAINMETER_QUERY_ID_TRAY_EX_DL; - cds.cbData = (tray.size() + 1) * sizeof(wchar_t); + cds.cbData = (DWORD)((tray.size() + 1) * sizeof(wchar_t)); cds.lpData = (LPVOID) tray.c_str(); SendMessage((HWND)lParam, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds); @@ -760,7 +760,7 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA const std::wstring& tray = Rainmeter->GetTrayExecuteDR(); cds.dwData = RAINMETER_QUERY_ID_TRAY_EX_DR; - cds.cbData = (tray.size() + 1) * sizeof(wchar_t); + cds.cbData = (DWORD)((tray.size() + 1) * sizeof(wchar_t)); cds.lpData = (LPVOID) tray.c_str(); SendMessage((HWND)lParam, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds); @@ -772,7 +772,7 @@ LRESULT CALLBACK CTrayWindow::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA const std::wstring& tray = Rainmeter->GetTrayExecuteDM(); cds.dwData = RAINMETER_QUERY_ID_TRAY_EX_DM; - cds.cbData = (tray.size() + 1) * sizeof(wchar_t); + cds.cbData = (DWORD)((tray.size() + 1) * sizeof(wchar_t)); cds.lpData = (LPVOID) tray.c_str(); SendMessage((HWND)lParam, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds); diff --git a/Library/lua/LuaManager.cpp b/Library/lua/LuaManager.cpp index aa83f821..0b05d1cc 100644 --- a/Library/lua/LuaManager.cpp +++ b/Library/lua/LuaManager.cpp @@ -63,10 +63,10 @@ void LuaManager::LuaLog(const char* format, ... ) _CrtSetReportMode(_CRT_ASSERT, 0); errno = 0; - _vsnprintf_s( buffer, 4096, _TRUNCATE, format, args ); + _vsnprintf_s( buffer, _TRUNCATE, format, args ); if (errno != 0) { - _snprintf_s(buffer, 4096, _TRUNCATE, "LuaLog internal error: %s", format); + _snprintf_s(buffer, _TRUNCATE, "LuaLog internal error: %s", format); } _set_invalid_parameter_handler(oldHandler);