BOOL GetAppVersion( char *LibName
             , WORD *MajorVersion
             , WORD *MinorVersion
             , WORD *BuildNumber
             , WORD *RevisionNumber )
{
  DWORD dwHandle, dwLen;
  UINT BufLen;
  LPTSTR lpData;
  VS_FIXEDFILEINFO *pFileInfo;
  dwLen = GetFileVersionInfoSizeA( LibName, &dwHandle );
  if (!dwLen)     return FALSE;
  lpData = (LPTSTR) malloc (dwLen);
  if (!lpData)    
    return FALSE;
  if( !GetFileVersionInfoA( LibName, dwHandle, dwLen, lpData ) )
  {    
    free (lpData);    return FALSE;
  }
  if( VerQueryValueA( lpData, "\\", (LPVOID *) &pFileInfo, (PUINT)&BufLen ) )
  {
    *MajorVersion = HIWORD(pFileInfo->dwFileVersionMS);    
    *MinorVersion = LOWORD(pFileInfo->dwFileVersionMS);
    *BuildNumber = HIWORD(pFileInfo->dwFileVersionLS);    
    *RevisionNumber = LOWORD(pFileInfo->dwFileVersionLS);
    free (lpData);    return TRUE;
  }
  free (lpData);
  return FALSE;
}