This commit is contained in:
2025-10-04 11:42:17 +05:00
parent a0d46ae89d
commit 13122d17c2
56 changed files with 127 additions and 38438 deletions

View File

@ -75,16 +75,50 @@ double getDoubleVal(VARIANT *pvarPropVal)
return 0;
}
//---------------------------------------------------------------------------
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
std::string getStringVal(VARIANT *pvarPropVal)
//Преобразование типов если нужно
//---------------------------------------------------------------------------
//Преобразование типов если нужно
std::string getStringVal(VARIANT* pvarPropVal, const std::string& dateFormat = "")
{
if(pvarPropVal->vt==VT_BOOL) return Utility::IntToStdStr(pvarPropVal->boolVal==0 ? 0 : 1); else
if(pvarPropVal->vt==VT_I2) return Utility::IntToStdStr(pvarPropVal->bVal); else
if(pvarPropVal->vt==VT_I4) return Utility::IntToStdStr(pvarPropVal->intVal); else
if(pvarPropVal->vt==VT_R4) return Utility::FloatToStdStr(pvarPropVal->fltVal); else
if(pvarPropVal->vt==VT_R8) return Utility::FloatToStdStr(pvarPropVal->dblVal); else
if(pvarPropVal->vt==VT_BSTR) return getSTDStr(pvarPropVal->bstrVal); else
return "";
switch (pvarPropVal->vt)
{
case VT_BOOL:
return Utility::IntToStdStr(pvarPropVal->boolVal == 0 ? 0 : 1);
case VT_I2:
return Utility::IntToStdStr(pvarPropVal->bVal);
case VT_I4:
return Utility::IntToStdStr(pvarPropVal->intVal);
case VT_R4:
return Utility::FloatToStdStr(pvarPropVal->fltVal);
case VT_R8:
return Utility::FloatToStdStr(pvarPropVal->dblVal);
case VT_BSTR:
return getSTDStr(pvarPropVal->bstrVal);
case VT_DATE:
{
SYSTEMTIME st;
if (VariantTimeToSystemTime(pvarPropVal->date, &st))
{
std::string fmt = dateFormat.empty() ? "%Y-%m-%dT%H:%M:%S" : dateFormat;
struct tm tm = { 0 };
tm.tm_year = st.wYear - 1900;
tm.tm_mon = st.wMonth - 1;
tm.tm_mday = st.wDay;
tm.tm_hour = st.wHour;
tm.tm_min = st.wMinute;
tm.tm_sec = st.wSecond;
tm.tm_isdst = -1;
char buf[256];
if (strftime(buf, sizeof(buf), fmt.c_str(), &tm) > 0)
{
return std::string(buf);
}
}
return "";
}
default:
return "";
}
}
//---------------------------------------------------------------------------
std::wstring getWStringVal(VARIANT *pvarPropVal)
@ -126,7 +160,7 @@ _bstr_t bs(vt);
return std::string(static_cast<const char*>(bs));
}*/
//---------------------------------------------------------------------------
///<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Unicode BSTR <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> ANSI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> std::string
///Преобразование из Unicode BSTR строки в ANSI строку std::string
std::string getSTDStr(const BSTR& unicodestr)
{
std::string str="";
@ -150,11 +184,11 @@ std::wstring getSTDWStr(const BSTR& unicodestr)
return unicodestr;
}
//---------------------------------------------------------------------------
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> ini <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//Сохранить параметр в ini файл
bool IniWriteW(std::wstring filename,std::wstring section,std::wstring key,std::wstring data)
{
std::wstring str= Utility::BeforeWLast(filename,L'\\');
CreateDirectory(str.c_str(), NULL); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
CreateDirectory(str.c_str(), NULL); //Пробуем создать папку
return WritePrivateProfileString(
(LPCWSTR)section.c_str(),
@ -178,7 +212,7 @@ std::wstring IniReadW(std::wstring filename,std::wstring section,std::wstring ke
return out;
}
//---------------------------------------------------------------------------
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> "Application Data" <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//Путь к "Application Data" для всех пользователей
std::wstring getCommonAppPathW()
{
wchar_t szPath[MAX_PATH];
@ -186,7 +220,7 @@ std::wstring getCommonAppPathW()
return szPath;
}
//---------------------------------------------------------------------------
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> "Application Data" <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//Путь к "Application Data" для всех пользователей
std::string getCommonAppPathA()
{
char szPath[MAX_PATH];
@ -194,7 +228,7 @@ std::string getCommonAppPathA()
return szPath;
}
//---------------------------------------------------------------------------
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> "Application Data" <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//Путь к "Application Data" для текущего пользователя
/*std::wstring getDefaultAppPathW()
{
wchar_t szPath[MAX_PATH];
@ -202,7 +236,7 @@ std::string getCommonAppPathA()
return szPath;
}*/
//---------------------------------------------------------------------------
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> "Application Data" <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//Путь к "Application Data" пользователя
std::wstring getAppDataPathW()
{
wchar_t szPath[MAX_PATH];
@ -210,7 +244,7 @@ std::wstring getAppDataPathW()
return szPath;
}
//---------------------------------------------------------------------------
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> "Application Data" <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//Путь к "Application Data" пользователя
std::string getAppDataPathA()
{
char szPath[MAX_PATH];
@ -218,14 +252,14 @@ std::string getAppDataPathA()
return szPath;
}
//---------------------------------------------------------------------------
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//Выключить компьютер
bool shoot(bool reboot, bool force)
{
/*
OSVERSIONINFO ver;
ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&ver);
if (ver.dwPlatformId == VER_PLATFORM_WIN32_NT) // <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NT <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SE_SHUTDOWN_NAME
if (ver.dwPlatformId == VER_PLATFORM_WIN32_NT) // в семействе NT для выключения необходимо иметь привилегию SE_SHUTDOWN_NAME
{
HANDLE hToken;
TOKEN_PRIVILEGES* NewState;
@ -267,7 +301,7 @@ std::string getCurrentFilePath()
*/
}
//---------------------------------------------------------------------------
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
//Прочитать версию файла
std::string getFileVersion( std::wstring path )
{
DWORD dwHandle, sz = GetFileVersionInfoSizeW( path.c_str(), & dwHandle );