Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
getver.c
Package: 屏幕取词程序VC源码.zip [view]
Upload User: chzmdj
Upload Date: 2007-01-22
Package Size: 135k
Code Size: 3k
Category:
SourceCode/Document
Development Platform:
C/C++
- #include <windows.h>
- #include <limits.h>
- #include "GetVer.h"
- BOOL GetProgramVersion(LPTSTR szFileName,
- int nVersionMin[3],
- int nVersionMax[3],
- DWORD dwLangId
- )
- {
- DWORD dwZero, dwVerInfoSize;
- LPVOID lpData;
- LPVOID lpBuffer;
- UINT uBytes;
- VS_FIXEDFILEINFO *pVsFixedFileInfo;
- INT nVersionNums[3], i;
- WORD* pdwLangIds;
- BOOL boolIsLangSupported = FALSE;
- if(szFileName == NULL)
- return FALSE;
- dwVerInfoSize = GetFileVersionInfoSize(szFileName, &dwZero);
- if(!dwVerInfoSize)
- return FALSE;
- lpData = HeapAlloc(GetProcessHeap(), 0, dwVerInfoSize);
- if(!lpData)
- return FALSE;
- __try {
- if(!GetFileVersionInfo(szFileName, 0, dwVerInfoSize, lpData))
- return FALSE;
- if(!VerQueryValue(lpData, "\", &lpBuffer, &uBytes))
- return FALSE;
- if( uBytes == 0 )
- return FALSE;
- pVsFixedFileInfo = (VS_FIXEDFILEINFO *)lpBuffer;
- nVersionNums[0] = HIWORD(pVsFixedFileInfo-> dwFileVersionMS);
- nVersionNums[1] = LOWORD(pVsFixedFileInfo->dwFileVersionMS);
- nVersionNums[2] = pVsFixedFileInfo->dwFileVersionLS;
- if(dwLangId == 0)
- __leave;
- if(!VerQueryValue(lpData, "\VarFileInfo\Translation", &lpBuffer, &uBytes))
- return FALSE;
- if(uBytes == 0)
- return FALSE;
- pdwLangIds = (WORD *)lpBuffer;
- for(i = 0; i < (INT)(uBytes/sizeof(WORD)); i++)
- {
- if(pdwLangIds[i] == dwLangId)
- {
- boolIsLangSupported = TRUE;
- break;
- }
- }
- if( !boolIsLangSupported )
- return FALSE;
- } __finally {
- if(lpData)
- HeapFree(GetProcessHeap(), 0, lpData);
- }
- return TRUE;
- }
- BOOL IsDesiredFileVersion(LPTSTR szFileExeName, DWORD dwLangId)
- {
- int vermin[3] = {IE_VERSION_FIRST, IE_VERSION_SECOND, 0},
- vermax[3] = {IE_VERSION_FIRST, IE_VERSION_SECOND, INT_MAX};
- return GetProgramVersion(szFileExeName, vermin, vermax, dwLangId);
- }