获取windows可执行文件的version信息(版本号)
2015-09-09 00:00
411 查看
之前在msdn上Version Information看到文件版本信息的介绍,看着整体比较复杂,就一直没做。现在需要获取ocx文件的版本号,所以查找了下相关资料,比较有用的就是VS_FIXEDFILEINFO结构,获取这个参数就基本可以完成任务了。
代码如下:
基本思路就是先获取可执行文件所在的全路径,然后使用GetFileVersionInfo函数,获取版本信息;之后使用VerQueryValue函数,查询版本信息。
代码如下:
1 //typedef struct tagVS_FIXEDFILEINFO 2 //{ 3 // DWORD dwSignature; /* e.g. 0xfeef04bd */ 4 // DWORD dwStrucVersion; /* e.g. 0x00000042 = "0.42" */ 5 // DWORD dwFileVersionMS; /* e.g. 0x00030075 = "3.75" */ 6 // DWORD dwFileVersionLS; /* e.g. 0x00000031 = "0.31" */ 7 // DWORD dwProductVersionMS; /* e.g. 0x00030010 = "3.10" */ 8 // DWORD dwProductVersionLS; /* e.g. 0x00000031 = "0.31" */ 9 // DWORD dwFileFlagsMask; /* = 0x3F for version "0.42" */ 10 // DWORD dwFileFlags; /* e.g. VFF_DEBUG | VFF_PRERELEASE */ 11 // DWORD dwFileOS; /* e.g. VOS_DOS_WINDOWS16 */ 12 // DWORD dwFileType; /* e.g. VFT_DRIVER */ 13 // DWORD dwFileSubtype; /* e.g. VFT2_DRV_KEYBOARD */ 14 // DWORD dwFileDateMS; /* e.g. 0 */ 15 // DWORD dwFileDateLS; /* e.g. 0 */ 16 //} VS_FIXEDFILEINFO; 17 { 18 char szAppFullPath[_MAX_PATH] = {0}; 19 20 GetModuleFileName(NULL,szAppFullPath,MAX_PATH);//得到程序模块名称,全路径 21 22 //获取当前文件的版本信息 23 DWORD dwLen = GetFileVersionInfoSize(szAppFullPath,NULL); 24 char *pszAppVersion = new char[dwLen+1]; 25 if(pszAppVersion) 26 { 27 memset(pszAppVersion,0,sizeof(char)*(dwLen+1)); 28 GetFileVersionInfo(szAppFullPath,NULL,dwLen,pszAppVersion); 29 CString strVersion; 30 UINT nLen(0); 31 VS_FIXEDFILEINFO *pFileInfo(NULL); 32 VerQueryValue(pszAppVersion,"\\",(LPVOID*)&pFileInfo,&nLen); 33 if(pFileInfo) 34 { 35 //获取文件版本号 36 strVersion.Format("%d.%d.%d.%d",HIWORD(pFileInfo->dwFileVersionMS), 37 LOWORD(pFileInfo->dwFileVersionMS), 38 HIWORD(pFileInfo->dwFileVersionLS), 39 LOWORD(pFileInfo->dwFileVersionLS)); 40 } 41 } 42 }
基本思路就是先获取可执行文件所在的全路径,然后使用GetFileVersionInfo函数,获取版本信息;之后使用VerQueryValue函数,查询版本信息。
相关文章推荐
- FFmpeg Basics学习笔记(1)ffmpeg基础
- wcout输出中文不显示
- C++常见内存错误及解决方案
- 线程通信机制之定时器队列
- STL之std::set、std::map的lower_bound和upper_bound函数使用说明
- DLL中获取主程序句柄
- ftell函数使用注意事项
- 隐藏windows任务栏中的窗口显示
- Beginning SDL 2.0(2) TwinklebearDev SDL 2.0 Tutorial
- 常用的字符串分割方法
- Beginning SDL 2.0(3) SDL介绍及BMP渲染
- Windows下GUI编程——窗口
- Beginning SDL 2.0(1) SDL功能简介
- Beginning SDL 2.0(6) 音频渲染及wav播放
- Windows下断言的类型及实现
- Beginning SDL 2.0(4) YUV加载及渲染
- 控制台输入输出机制
- 控制台编程基础总结
- Windows下DLL查找顺序
- visual c++中预定义的宏