2010年12月14日 星期二

顯示檔案版本

檔案下載連結:
https://docs.google.com/uc?id=0B4PwTcFHZPWbNjMwNzJkYjctNTQxOC00ZjQ2LWFkYzYtOTEwNGVjOGU5OGZi&export=download&hl=zh_TW

檔案下載後請將附屬檔名.ex_ 改成.exe 即可執行

檔案執行的畫面如下:

關鍵function
bool TForm1::GetVerFromFile(char *filepath, String& ver)
{
  UINT uLen;
  VS_FIXEDFILEINFO *lpFfi;
  DWORD verMS = 0;
  DWORD verLS = 0;
  DWORD dummy;
  DWORD fviSize;
  LPBYTE lpVersionInfo;

  fviSize = GetFileVersionInfoSize(filepath , &dummy );
  lpVersionInfo = new BYTE[fviSize];
  if (!GetFileVersionInfo(filepath , 0 , fviSize , lpVersionInfo ))
  {
    delete [] lpVersionInfo ;
    return false;
  }
  if (!VerQueryValue( lpVersionInfo , _T("\\") , (LPVOID *)&lpFfi , &uLen ))
  {
    delete [] lpVersionInfo ;
    return false;
  }
  verMS = lpFfi->dwFileVersionMS;
  verLS = lpFfi->dwFileVersionLS;
  delete [] lpVersionInfo;

  ver.sprintf(_T("%d.%d.%d.%d"), HIWORD(verMS), LOWORD(verMS), HIWORD(verLS),  LOWORD(verLS));
  return true;
}

沒有留言:

張貼留言