国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

山東省作風(fēng)建設(shè)網(wǎng)站湖南網(wǎng)站排名

山東省作風(fēng)建設(shè)網(wǎng)站,湖南網(wǎng)站排名,如何開發(fā)一個微信公眾號,小程序登錄不了一、需求背景獲取軟件下依賴的dll庫的版本信息,如下圖所示版本為1.0.7.1018二、實現(xiàn)方法2.1步驟windows下實現(xiàn),基于version.lib(version.dll)提供的函數(shù)獲取這些信息首先使用GetFileVersionInfoSizeA(W)獲取VersionInfo的大小,申請緩沖區(qū)&…

一、需求背景

獲取軟件下依賴的dll庫的版本信息,如下圖所示版本為1.0.7.1018

二、實現(xiàn)方法

2.1步驟

windows下實現(xiàn),基于version.lib(version.dll)提供的函數(shù)獲取這些信息

  1. 首先使用GetFileVersionInfoSizeA(W)獲取VersionInfo的大小,申請緩沖區(qū);

  1. 接著使用GetFileVersionInfoA(W)獲取VersionInfo數(shù)據(jù)到緩沖區(qū);

  1. 接著使用VerQueryValueA(W)依次獲取\,\VarFileInfo\Translation,再根據(jù)Translation獲取語言類型,接著\VarFileInfo\080404B0\ProductVersion便獲取到了版本信息。

參考:https://www.cnblogs.com/comor/p/10607383.html

2.2 源碼

#include <QDebug>
#include <string>
#include <tchar.h>
#include <iostream>
#include <windows.h>BOOL GetFileInfoStringWinApi(LPCTSTR pFileName, LPCTSTR pName /* = NULL */, LPTSTR ptBuf, UINT lenBuf)
{DWORD   dwDummyHandle = 0; // will always be set to zeroDWORD   dwLen = 0;BYTE    *pVersionInfo = NULL;BOOL    bRetVal;VS_FIXEDFILEINFO    FileVersion;HMODULE        hVerDll;hVerDll = LoadLibrary(_T("VERSION.dll"));if (hVerDll == NULL){return FALSE;}#ifdef _UNICODEtypedef DWORD(WINAPI * Fun_GetFileVersionInfoSize)(LPCTSTR, DWORD *);typedef BOOL(WINAPI * Fun_GetFileVersionInfo)(LPCTSTR, DWORD, DWORD, LPVOID);typedef BOOL(WINAPI * Fun_VerQueryValue)(LPCVOID, LPCTSTR, LPVOID, PUINT);
#elsetypedef DWORD(WINAPI * Fun_GetFileVersionInfoSize)(LPCSTR, DWORD *);typedef BOOL(WINAPI * Fun_GetFileVersionInfo)(LPCSTR, DWORD, DWORD, LPVOID);typedef BOOL(WINAPI * Fun_VerQueryValue)(LPCVOID, LPCSTR, LPVOID, PUINT);
#endifFun_GetFileVersionInfoSize        pGetFileVersionInfoSize;Fun_GetFileVersionInfo            pGetFileVersionInfo;Fun_VerQueryValue                pVerQueryValue;#ifdef _UNICODEpGetFileVersionInfoSize = (Fun_GetFileVersionInfoSize)::GetProcAddress(hVerDll, "GetFileVersionInfoSizeW");pGetFileVersionInfo = (Fun_GetFileVersionInfo)::GetProcAddress(hVerDll, "GetFileVersionInfoW");pVerQueryValue = (Fun_VerQueryValue)::GetProcAddress(hVerDll, "VerQueryValueW");
#elsepGetFileVersionInfoSize = (Fun_GetFileVersionInfoSize)::GetProcAddress(hVerDll, "GetFileVersionInfoSizeA");pGetFileVersionInfo = (Fun_GetFileVersionInfo)::GetProcAddress(hVerDll, "GetFileVersionInfoA");pVerQueryValue = (Fun_VerQueryValue)::GetProcAddress(hVerDll, "VerQueryValueA");
#endifstruct TRANSLATION{WORD langID;            // language IDWORD charset;            // character set (code page)} Translation;Translation.langID = 0x0409;    //Translation.charset = 1252;        // default = ANSI code pagedwLen = pGetFileVersionInfoSize(pFileName, &dwDummyHandle);if (dwLen == 0){bRetVal = FALSE;goto End;}pVersionInfo = new BYTE[dwLen]; // allocate version infobRetVal = pGetFileVersionInfo(pFileName, 0, dwLen, pVersionInfo);if (bRetVal == FALSE){goto End;}VOID     *pVI;UINT    uLen;bRetVal = pVerQueryValue(pVersionInfo, _T("\\"), &pVI, &uLen);if (bRetVal == FALSE){goto End;}memcpy(&FileVersion, pVI, sizeof(VS_FIXEDFILEINFO));bRetVal = pVerQueryValue(pVersionInfo, _T("\\VarFileInfo\\Translation"),&pVI, &uLen);if (bRetVal && uLen >= 4){memcpy(&Translation, pVI, sizeof(TRANSLATION));}else{bRetVal = FALSE;goto End;}//  BREAKIF(FileVersion.dwSignature != VS_FFI_SIGNATURE);if (FileVersion.dwSignature != VS_FFI_SIGNATURE){bRetVal = FALSE;goto End;}VOID        *pVal;UINT        iLenVal;if (pName == NULL){_stprintf_s(ptBuf, lenBuf, _T("%d.%d.%d.%d"),HIWORD(FileVersion.dwFileVersionMS), LOWORD(FileVersion.dwFileVersionMS),HIWORD(FileVersion.dwFileVersionLS), LOWORD(FileVersion.dwFileVersionLS));}else{TCHAR    szQuery[1024];_stprintf_s(szQuery, 1024, _T("\\StringFileInfo\\%04X%04X\\%s"),Translation.langID, Translation.charset, pName);bRetVal = pVerQueryValue(pVersionInfo, szQuery, &pVal, &iLenVal);if (bRetVal){_stprintf_s(ptBuf, lenBuf, _T("%s"), (TCHAR *)pVal);}else{_stprintf_s(ptBuf, lenBuf, _T("%s"), _T(""));}}End:FreeLibrary(hVerDll);hVerDll = NULL;delete[] pVersionInfo;pVersionInfo = NULL;return bRetVal;
}bool GetFileInfoString(const QString &fileName, const QString &name, QString &value)
{TCHAR *ptszStr = NULL;ptszStr = new TCHAR[1024];LPCWSTR fileName_wstr = reinterpret_cast<LPCWSTR>(fileName.data());LPCWSTR name_wstr = reinterpret_cast<LPCWSTR>(name.data());BOOL bRet = GetFileInfoStringWinApi(fileName_wstr, name_wstr, ptszStr, 1024);value = QString::fromWCharArray(ptszStr);delete ptszStr;ptszStr = NULL;return bRet;
}QString GetFileProductVersion(const QString &fileName)
{QString version;GetFileInfoString(fileName, "ProductVersion", version);return version;
}

2.3 測試結(jié)果

int main(int argc, char *argv[])
{QString fileName = "xxx//CZVisionCameraOperator.dll";qDebug() << GetFileProductVersion(fileName);return 0;
}

2.4 擴(kuò)展

除版本信息,還可以獲取文件說明、產(chǎn)品名稱、版權(quán)、公司名稱、原始文件名稱等

FileDescription 文件說明

FileVersion 文件版本

ProductName 產(chǎn)品名稱

ProductVersion 產(chǎn)品版本

LegalCopyright 版權(quán)

CompanyName 公司名稱

OriginalFilename 原始文件名

http://aloenet.com.cn/news/36150.html

相關(guān)文章:

  • 做動效的網(wǎng)站免費外鏈發(fā)布
  • 網(wǎng)站的后臺登錄注冊怎么做賬戶競價托管公司
  • asia域名發(fā)布網(wǎng)站谷歌瀏覽器安卓下載
  • 長治制作網(wǎng)站傳統(tǒng)營銷和網(wǎng)絡(luò)營銷的區(qū)別
  • ui設(shè)計與網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣渠道都有哪些
  • 網(wǎng)站一個人可以做嗎找培訓(xùn)機(jī)構(gòu)的網(wǎng)站
  • 網(wǎng)站建設(shè)技術(shù)分類aso具體優(yōu)化
  • 做中介開什么網(wǎng)站如何搜索網(wǎng)頁關(guān)鍵詞
  • 湖北網(wǎng)站建設(shè)企業(yè)百度sem推廣具體做什么
  • 富平做網(wǎng)站中國職業(yè)培訓(xùn)在線平臺
  • 網(wǎng)站設(shè)計創(chuàng)意2023年6月疫情情況
  • 做ppt好用的網(wǎng)站廣告代發(fā)平臺
  • wen前端網(wǎng)站開發(fā)日記外鏈的作用
  • 清遠(yuǎn)企業(yè)網(wǎng)站排名win7優(yōu)化教程
  • 權(quán)重較高網(wǎng)站深圳百度推廣聯(lián)系方式
  • 專注大連網(wǎng)站建設(shè)百度推廣登錄手機(jī)版
  • asp.net 網(wǎng)站訪問量商品推廣與營銷的方式
  • 京東商城網(wǎng)站設(shè)計酒店如何進(jìn)行網(wǎng)絡(luò)營銷
  • 畫冊制作揭陽seo推廣公司
  • 永嘉網(wǎng)站建設(shè)幾熱門關(guān)鍵詞
  • 山東美建站金華百度推廣公司
  • 開發(fā)一個視頻網(wǎng)站要多少錢360優(yōu)化大師app下載
  • 南城區(qū)網(wǎng)站仿做網(wǎng)絡(luò)營銷推廣與策劃
  • 05網(wǎng)亮點給力大試卷網(wǎng)站seo博客
  • 贛州信息港贛州熱線湖南seo網(wǎng)站多少錢
  • 我的世界做神器指令網(wǎng)站網(wǎng)絡(luò)平臺建站
  • 網(wǎng)站開發(fā)難學(xué)嗎今天的新聞 聯(lián)播最新消息
  • 用vs2010做的網(wǎng)站網(wǎng)頁設(shè)計模板圖片
  • 陽信做網(wǎng)站營銷型網(wǎng)站建設(shè)費用
  • 昆明做網(wǎng)站的個人淘寶seo搜索引擎原理