123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- #include "DiosGeneralDefine_V3.h"
- //获取当前路径
- string GetProcessDirectory()
- {
- string ret = "";
- char szFilename[MAX_PATH] = { 0 };
- DWORD res = GetModuleFileNameA(0, szFilename, MAX_PATH);
- if (res == 0)
- {
- return ret;
- }
- string fullpath = szFilename;
- string::size_type firstHit = fullpath.find_last_of('\\');
- if (firstHit == string::npos || firstHit == 0)
- {
- return ret;
- }
- ret = fullpath.substr(0, firstHit);//kick last \
- return ret;
- }
- //获取配置文件中指定模块的版本号
- bool GetVersion(string& version, HMODULE hMyModule)
- {
- try {
- char filename[MAX_PATH + 1] = { 0 };
- if (GetModuleFileName(hMyModule, filename, MAX_PATH) == 0)
- {
- //mLog::Error("dll HMODULEis null\n");
- return false;
- }
- printf("get Generator path:{$}\n", filename);
- //mLog::Info("get Generator path:{$}\n", filename);
- DWORD dummy;
- DWORD size = GetFileVersionInfoSize(filename, &dummy);
- if (size == 0)
- {
- return false;
- }
- auto data = make_unique<BYTE[]>(size);
- if (!GetFileVersionInfo(filename, 0, size, &data[0]))
- {
- return false;
- }
- UINT32 len = 0;
- VS_FIXEDFILEINFO* fixed_file_info = 0;
- if (!VerQueryValue(&data[0], TEXT("\\"), reinterpret_cast<void**>(&fixed_file_info), &len))
- {
- return false;
- }
- // version 为版本号
- UINT32 vBitNumber = 0;
- vBitNumber = HIWORD(fixed_file_info->dwProductVersionMS);
- version += to_string(vBitNumber);
- version += ".";
- vBitNumber = LOWORD(fixed_file_info->dwProductVersionMS);
- version += to_string(vBitNumber);
- version += ".";
- vBitNumber = HIWORD(fixed_file_info->dwProductVersionLS);
- version += to_string(vBitNumber);
- version += ".";
- vBitNumber = LOWORD(fixed_file_info->dwProductVersionLS);
- version += to_string(vBitNumber);
- return true;
- }
- catch (...)
- {
- printf("get Generator Mould version failed");
- //mLog::Error("get Generator Mould version failed\n");
- }
- return false;
- }
- bool GetVersion(string& version, ResDataObject& config)
- {
- try {
- string procdir = "";
- char filename[MAX_PATH + 1] = { 0 };
- procdir = GetProcessDirectory();
- if (procdir.empty())
- {
- if (GetModuleFileName(nullptr, filename, MAX_PATH) == 0)
- {
- return false;
- }
- }
- else
- {
- string oemdrvpath = (const char*)config["oemdriver"];
- {
- string keystr = "%ROOT%";
- string::size_type pos = 0;
- string::size_type keylen = keystr.size();
- string::size_type replen = procdir.size();
- while ((pos = oemdrvpath.find(keystr, pos)) != string::npos)
- {
- oemdrvpath.replace(pos, keylen, procdir);
- pos += replen;
- }
- }
- strncpy_s(filename, oemdrvpath.c_str(), MAX_PATH);
- }
- printf("get Generator path:{$}\n", filename);
- //mLog::Info("get Generator path:{$}\n", filename);
- DWORD dummy;
- DWORD size = GetFileVersionInfoSize(filename, &dummy);
- if (size == 0)
- {
- return false;
- }
- auto data = make_unique<BYTE[]>(size);
- if (!GetFileVersionInfo(filename, 0, size, &data[0]))
- {
- return false;
- }
- UINT32 len = 0;
- VS_FIXEDFILEINFO* fixed_file_info = 0;
- if (!VerQueryValue(&data[0], TEXT("\\"), reinterpret_cast<void**>(&fixed_file_info), &len))
- {
- return false;
- }
- // version 为版本号
- UINT32 vBitNumber = 0;
- vBitNumber = HIWORD(fixed_file_info->dwProductVersionMS);
- version += to_string(vBitNumber);
- version += ".";
- vBitNumber = LOWORD(fixed_file_info->dwProductVersionMS);
- version += to_string(vBitNumber);
- version += ".";
- vBitNumber = HIWORD(fixed_file_info->dwProductVersionLS);
- version += to_string(vBitNumber);
- version += ".";
- vBitNumber = LOWORD(fixed_file_info->dwProductVersionLS);
- version += to_string(vBitNumber);
- return true;
- }
- catch (...)
- {
- printf("get Generator Mould version failed");
- //mLog::Error("get Generator Mould version failed\n");
- }
- return false;
- }
- bool GetVersion(string& version)
- {
- try {
- char filename[MAX_PATH + 1] = { 0 };
- if (GetModuleFileName(nullptr, filename, MAX_PATH) == 0)
- {
- return false;
- }
- printf("get Generator path:{$}\n", filename);
- //mLog::Info("get Generator path:{$}\n", filename);
- DWORD dummy;
- DWORD size = GetFileVersionInfoSize(filename, &dummy);
- if (size == 0)
- {
- return false;
- }
- auto data = make_unique<BYTE[]>(size);
- if (!GetFileVersionInfo(filename, 0, size, &data[0]))
- {
- return false;
- }
- UINT32 len = 0;
- VS_FIXEDFILEINFO* fixed_file_info = 0;
- if (!VerQueryValue(&data[0], TEXT("\\"), reinterpret_cast<void**>(&fixed_file_info), &len))
- {
- return false;
- }
- // version 为版本号
- UINT32 vBitNumber = 0;
- vBitNumber = HIWORD(fixed_file_info->dwProductVersionMS);
- version += to_string(vBitNumber);
- version += ".";
- vBitNumber = LOWORD(fixed_file_info->dwProductVersionMS);
- version += to_string(vBitNumber);
- version += ".";
- vBitNumber = HIWORD(fixed_file_info->dwProductVersionLS);
- version += to_string(vBitNumber);
- version += ".";
- vBitNumber = LOWORD(fixed_file_info->dwProductVersionLS);
- version += to_string(vBitNumber);
- return true;
- }
- catch (...)
- {
- printf("get Generator Mould version failed");
- //mLog::Error("get Generator Mould version failed\n");
- }
- return false;
- }
- //以指定分隔符截断字符串
- void StrSubstrData(const char* strData, char delimiter, std::vector<string>& array)
- {
- string strtemp = strData;
- string strItem = strtemp;
- // cout << "origin:" << strtemp << endl;
- std::size_t oldPos = 0;
- std::size_t findPos = strtemp.find(delimiter);
- while (findPos != string::npos)
- {
- strItem = strtemp.substr(oldPos, findPos - oldPos);
- array.push_back(strItem);
- if (findPos != strtemp.length())
- {
- oldPos = findPos + 1;
- findPos = strtemp.find(",", oldPos);
- if (findPos == string::npos)
- {
- strItem = strtemp.substr(oldPos, strtemp.length() - oldPos);
- break;
- }
- }
- else
- {
- break;
- }
- }
- array.push_back(strItem);
- }
- void StrSubstrData(const char* strData, char delimiter,std::list<string> &array)
- {
- string strtemp = strData;
- string strItem = strtemp;
- bool lastFlag = false;
- std::size_t oldPos = 0;
- while (!strItem.empty())
- {
- std::size_t findPos = strtemp.find(delimiter, oldPos);
- if (findPos != string::npos)
- {
- strItem = strtemp.substr(oldPos, findPos - oldPos);
- }
- else
- {
- strItem = strtemp.substr(oldPos, strtemp.length() - oldPos);
- lastFlag = true;
- }
- array.push_back(strItem);
- if (lastFlag)
- {
- break;
- }
- else
- {
- oldPos = findPos + 1;
- }
- }
- }
|