mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
- FIXED: inconsistent numerical value via DynamicVariables (issue 130)
- FIXED: Problem with WebParser and "local files" with Cyrillic chars in the path. (issue 139) - The coded character set of the logfile is changed to UTF-8. (ccs=UTF-8) http://msdn.microsoft.com/en-us/library/yeby3zcb%28VS.80%29.aspx - "MS Shell Dlg 2" is now used for the ABOUT dialog box. http://support.microsoft.com/kb/282187
This commit is contained in:
parent
d033137f72
commit
ee8d4867c2
@ -503,7 +503,7 @@ const std::wstring& CConfigParser::ReadString(LPCTSTR section, LPCTSTR key, LPCT
|
|||||||
std::map<std::wstring, CMeasure*>::iterator iter = m_Measures.find(var);
|
std::map<std::wstring, CMeasure*>::iterator iter = m_Measures.find(var);
|
||||||
if (iter != m_Measures.end())
|
if (iter != m_Measures.end())
|
||||||
{
|
{
|
||||||
std::wstring value = (*iter).second->GetStringValue(true, 1, 5, false);
|
std::wstring value = (*iter).second->GetStringValue(false, 1, 5, false);
|
||||||
|
|
||||||
// Measure found, replace it with the value
|
// Measure found, replace it with the value
|
||||||
result.replace(result.begin() + pos, result.begin() + end + 1, value);
|
result.replace(result.begin() + pos, result.begin() + end + 1, value);
|
||||||
|
@ -155,7 +155,7 @@ END
|
|||||||
IDD_ABOUT_DIALOG DIALOG DISCARDABLE 0, 0, 234, 225
|
IDD_ABOUT_DIALOG DIALOG DISCARDABLE 0, 0, 234, 225
|
||||||
STYLE DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
STYLE DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||||
CAPTION "Rainmeter"
|
CAPTION "Rainmeter"
|
||||||
FONT 8, "MS Sans Serif"
|
FONT 8, "MS Shell Dlg 2"
|
||||||
BEGIN
|
BEGIN
|
||||||
CONTROL "List1",IDC_STATISTICS,"SysListView32",LVS_REPORT |
|
CONTROL "List1",IDC_STATISTICS,"SysListView32",LVS_REPORT |
|
||||||
LVS_SINGLESEL | LVS_NOSORTHEADER | WS_BORDER |
|
LVS_SINGLESEL | LVS_NOSORTHEADER | WS_BORDER |
|
||||||
|
@ -551,7 +551,6 @@ BOOL LSLog(int nLevel, LPCTSTR pszModule, LPCTSTR pszMessage)
|
|||||||
|
|
||||||
// Clear the file
|
// Clear the file
|
||||||
logFile = _wfopen(logfile.c_str(), L"w");
|
logFile = _wfopen(logfile.c_str(), L"w");
|
||||||
fputwc(0xFEFF, logFile);
|
|
||||||
fclose(logFile);
|
fclose(logFile);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -562,7 +561,7 @@ BOOL LSLog(int nLevel, LPCTSTR pszModule, LPCTSTR pszMessage)
|
|||||||
|
|
||||||
if (logFound == 1)
|
if (logFound == 1)
|
||||||
{
|
{
|
||||||
logFile = _wfopen(logfile.c_str(), L"a+");
|
logFile = _wfopen(logfile.c_str(), L"a+, ccs=UTF-8");
|
||||||
if (logFile)
|
if (logFile)
|
||||||
{
|
{
|
||||||
switch(nLevel)
|
switch(nLevel)
|
||||||
|
@ -35,7 +35,6 @@
|
|||||||
#include <Iphlpapi.h>
|
#include <Iphlpapi.h>
|
||||||
#include <commctrl.h>
|
#include <commctrl.h>
|
||||||
#include <shellapi.h>
|
#include <shellapi.h>
|
||||||
#include <algorithm>
|
|
||||||
#include <Mmsystem.h>
|
#include <Mmsystem.h>
|
||||||
#include <tchar.h>
|
#include <tchar.h>
|
||||||
#include <shlobj.h>
|
#include <shlobj.h>
|
||||||
@ -55,6 +54,7 @@
|
|||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
// RUNTIME
|
// RUNTIME
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -145,6 +145,26 @@ std::wstring ConvertToWide(LPCSTR str)
|
|||||||
return szWide;
|
return szWide;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string ConvertToACP(LPCWSTR str)
|
||||||
|
{
|
||||||
|
std::string szAscii;
|
||||||
|
|
||||||
|
if (str && *str)
|
||||||
|
{
|
||||||
|
int strLen = (int)wcslen(str) + 1;
|
||||||
|
int bufLen = WideCharToMultiByte(CP_ACP, 0, str, strLen, NULL, 0, NULL, NULL);
|
||||||
|
if (bufLen > 0)
|
||||||
|
{
|
||||||
|
char* tmpSz = new char[bufLen];
|
||||||
|
tmpSz[0] = 0;
|
||||||
|
WideCharToMultiByte(CP_ACP, 0, str, strLen, tmpSz, bufLen, NULL, NULL);
|
||||||
|
szAscii = tmpSz;
|
||||||
|
delete [] tmpSz;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return szAscii;
|
||||||
|
}
|
||||||
|
|
||||||
HWND FindMeterWindow()
|
HWND FindMeterWindow()
|
||||||
{
|
{
|
||||||
HWND wnd = FindWindow(L"RainmeterMeterWindow", NULL);
|
HWND wnd = FindWindow(L"RainmeterMeterWindow", NULL);
|
||||||
@ -206,7 +226,7 @@ UINT Initialize(HMODULE instance, LPCTSTR iniFile, LPCTSTR section, UINT id)
|
|||||||
|
|
||||||
UrlData* data = new UrlData;
|
UrlData* data = new UrlData;
|
||||||
data->section = section;
|
data->section = section;
|
||||||
data->updateRate = 1;
|
data->updateRate = 600;
|
||||||
data->updateCounter = 0;
|
data->updateCounter = 0;
|
||||||
data->iniFile = iniFile;
|
data->iniFile = iniFile;
|
||||||
|
|
||||||
@ -399,12 +419,18 @@ DWORD WINAPI NetworkThreadProc(LPVOID pParam)
|
|||||||
{
|
{
|
||||||
// Dump to a file
|
// Dump to a file
|
||||||
|
|
||||||
// Convert to a narrow string
|
FILE* file = _wfopen(urlData->debugFileLocation.c_str(), L"wb");
|
||||||
std::string path(urlData->debugFileLocation.begin(), urlData->debugFileLocation.end());
|
if (file)
|
||||||
|
{
|
||||||
FILE* file = fopen(path.c_str(), "wb");
|
fwrite(data, sizeof(BYTE), dwSize, file);
|
||||||
fwrite(data, sizeof(BYTE), dwSize, file);
|
fclose(file);
|
||||||
fclose(file);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::wstring error = L"WebParser: Failed to dump debug data: ";
|
||||||
|
error += urlData->debugFileLocation;
|
||||||
|
Log(error.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ParseData(urlData, (LPCSTR)data);
|
ParseData(urlData, (LPCSTR)data);
|
||||||
@ -486,7 +512,7 @@ void ParseData(UrlData* urlData, LPCSTR parseData)
|
|||||||
for (int i = 0; i < rc; i++)
|
for (int i = 0; i < rc; i++)
|
||||||
{
|
{
|
||||||
WCHAR buffer[1024];
|
WCHAR buffer[1024];
|
||||||
char* substring_start = (char*)(parseData + ovector[2 * i]);
|
const char* substring_start = parseData + ovector[2 * i];
|
||||||
int substring_length = ovector[2 * i + 1] - ovector[2 * i];
|
int substring_length = ovector[2 * i + 1] - ovector[2 * i];
|
||||||
substring_length = min(substring_length, 256);
|
substring_length = min(substring_length, 256);
|
||||||
std::string tmpStr(substring_start, substring_length);
|
std::string tmpStr(substring_start, substring_length);
|
||||||
@ -499,7 +525,7 @@ void ParseData(UrlData* urlData, LPCSTR parseData)
|
|||||||
int substring_length = ovector[2 * urlData->stringIndex + 1] - ovector[2 * urlData->stringIndex];
|
int substring_length = ovector[2 * urlData->stringIndex + 1] - ovector[2 * urlData->stringIndex];
|
||||||
|
|
||||||
EnterCriticalSection(&g_CriticalSection);
|
EnterCriticalSection(&g_CriticalSection);
|
||||||
std::string szResult((char*)substring_start, substring_length);
|
std::string szResult(substring_start, substring_length);
|
||||||
urlData->resultString = ConvertToWide(szResult.c_str());
|
urlData->resultString = ConvertToWide(szResult.c_str());
|
||||||
LeaveCriticalSection(&g_CriticalSection);
|
LeaveCriticalSection(&g_CriticalSection);
|
||||||
}
|
}
|
||||||
@ -522,7 +548,7 @@ void ParseData(UrlData* urlData, LPCSTR parseData)
|
|||||||
const char* substring_start = parseData + ovector[2 * ((*i).second)->stringIndex];
|
const char* substring_start = parseData + ovector[2 * ((*i).second)->stringIndex];
|
||||||
int substring_length = ovector[2 * ((*i).second)->stringIndex + 1] - ovector[2 * ((*i).second)->stringIndex];
|
int substring_length = ovector[2 * ((*i).second)->stringIndex + 1] - ovector[2 * ((*i).second)->stringIndex];
|
||||||
|
|
||||||
std::string szResult((char*)substring_start, substring_length);
|
std::string szResult(substring_start, substring_length);
|
||||||
|
|
||||||
if (!((*i).second)->regExp.empty())
|
if (!((*i).second)->regExp.empty())
|
||||||
{
|
{
|
||||||
@ -1080,8 +1106,17 @@ BYTE* DownloadUrl(std::wstring& url, DWORD* dwDataSize, bool forceReload)
|
|||||||
hUrlDump = InternetOpenUrl(hRootHandle, url.c_str(), NULL, NULL, flags, 0);
|
hUrlDump = InternetOpenUrl(hRootHandle, url.c_str(), NULL, NULL, flags, 0);
|
||||||
if (hUrlDump == NULL)
|
if (hUrlDump == NULL)
|
||||||
{
|
{
|
||||||
ShowError(__LINE__);
|
if (wcsnicmp(url.c_str(), L"file://", 7) == 0) // file scheme
|
||||||
return NULL;
|
{
|
||||||
|
std::string urlACP = ConvertToACP(url.c_str());
|
||||||
|
hUrlDump = InternetOpenUrlA(hRootHandle, urlACP.c_str(), NULL, NULL, flags, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hUrlDump == NULL)
|
||||||
|
{
|
||||||
|
ShowError(__LINE__);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*dwDataSize = 0;
|
*dwDataSize = 0;
|
||||||
@ -1167,7 +1202,8 @@ BYTE* DownloadUrl(std::wstring& url, DWORD* dwDataSize, bool forceReload)
|
|||||||
void ShowError(int lineNumber, WCHAR* errorMsg)
|
void ShowError(int lineNumber, WCHAR* errorMsg)
|
||||||
{
|
{
|
||||||
WCHAR szBuffer[4096];
|
WCHAR szBuffer[4096];
|
||||||
LPVOID lpMsgBuf = NULL;
|
|
||||||
|
DWORD dwErr = GetLastError();
|
||||||
|
|
||||||
WCHAR buffer[16];
|
WCHAR buffer[16];
|
||||||
wsprintf(buffer, L"%i", lineNumber);
|
wsprintf(buffer, L"%i", lineNumber);
|
||||||
@ -1178,22 +1214,33 @@ void ShowError(int lineNumber, WCHAR* errorMsg)
|
|||||||
|
|
||||||
if (errorMsg == NULL)
|
if (errorMsg == NULL)
|
||||||
{
|
{
|
||||||
if (GetLastError() == ERROR_INTERNET_EXTENDED_ERROR)
|
if (dwErr == ERROR_INTERNET_EXTENDED_ERROR)
|
||||||
{
|
{
|
||||||
DWORD dwError, dwLen = 4096;
|
DWORD dwError, dwLen = 4096;
|
||||||
if (InternetGetLastResponseInfo(&dwError, szBuffer, &dwLen))
|
if (InternetGetLastResponseInfo(&dwError, szBuffer, &dwLen))
|
||||||
{
|
{
|
||||||
err += szBuffer;
|
err += szBuffer;
|
||||||
|
wsprintf(buffer, L"%i", dwError);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
err += L"Unknown error";
|
||||||
|
wsprintf(buffer, L"%i", dwErr);
|
||||||
|
}
|
||||||
|
|
||||||
|
err += L" (ErrorCode=";
|
||||||
|
err += buffer;
|
||||||
|
err += L")";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DWORD dwErr = GetLastError();
|
LPVOID lpMsgBuf = NULL;
|
||||||
|
|
||||||
FormatMessage(
|
FormatMessage(
|
||||||
FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
||||||
FORMAT_MESSAGE_FROM_SYSTEM |
|
FORMAT_MESSAGE_FROM_SYSTEM |
|
||||||
FORMAT_MESSAGE_IGNORE_INSERTS,
|
FORMAT_MESSAGE_IGNORE_INSERTS |
|
||||||
|
FORMAT_MESSAGE_MAX_WIDTH_MASK,
|
||||||
NULL,
|
NULL,
|
||||||
dwErr,
|
dwErr,
|
||||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
|
||||||
@ -1204,15 +1251,18 @@ void ShowError(int lineNumber, WCHAR* errorMsg)
|
|||||||
|
|
||||||
if (lpMsgBuf == NULL)
|
if (lpMsgBuf == NULL)
|
||||||
{
|
{
|
||||||
err += L"Unknown error: ";
|
err += L"Unknown error";
|
||||||
wsprintf(buffer, L"%i", dwErr);
|
|
||||||
err += buffer;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
err += (LPTSTR)lpMsgBuf;
|
err += (LPTSTR)lpMsgBuf;
|
||||||
LocalFree(lpMsgBuf);
|
LocalFree(lpMsgBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wsprintf(buffer, L"%i", dwErr);
|
||||||
|
err += L" (ErrorCode=";
|
||||||
|
err += buffer;
|
||||||
|
err += L")";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user