在vc控制台下编译:
#include<windows.h>
#include<iostream.h>
void main()
{
char lptstrFilename[MAX_PATH];
DWORD dwHandle;
char dwLen[MAX_PATH];
char *lpData ;
BOOL success;
cout<<"please cin filename"<<endl;
cin>>lptstrFilename;
success=GetFileVersionInfo(lptstrFilename,dwHandle,dwLen,&lpData);
if(success)
cout<<lpData<<endl;
希望各位大哥给改一下}
#include<windows.h>
#include<iostream.h>
void main()
{
char lptstrFilename[MAX_PATH];
DWORD dwHandle;
char dwLen[MAX_PATH];
char *lpData ;
BOOL success;
cout<<"please cin filename"<<endl;
cin>>lptstrFilename;
success=GetFileVersionInfo(lptstrFilename,dwHandle,dwLen,&lpData);
if(success)
cout<<lpData<<endl;
希望各位大哥给改一下}
GetFileVersionInfo(lptstrFilename,dwHandle,dwLen,lpData);
char lpData ;
GetFileVersionInfo(lptstrFilename,dwHandle,dwLen,&lpData);
GetFileVersionInfo(lptstrFilename,dwHandle,dwLen,lpData);
char lpData ;
GetFileVersionInfo(lptstrFilename,dwHandle,dwLen,&lpData);
#include<windows.h>
#include<iostream.h>
void main()
{
char lptstrFilename[MAX_PATH]="E:\\NOTEPAD.EXE";
DWORD dwLen=0;
char *lpData=NULL ;
unsigned long iHandle;
BOOL success;
dwLen=GetFileVersionInfoSize(lptstrFilename,&iHandle);
lpData=new char[dwLen];
success=GetFileVersionInfo(lptstrFilename,iHandle,dwLen,lpData);
void *buf=NULL;
unsigned int len=0;
success=VerQueryValue(lpData,"\\",&buf,&len);
VS_FIXEDFILEINFO *pp=(VS_FIXEDFILEINFO*)buf;
delete []lpData;
}
Compiling...
1.cpp
D:\Program Files\Microsoft visual studio\MyProjects\demo_GetFileVersionInfo\1.cpp(8) : error C2065: 'bufferSize' : undeclared identifier
D:\Program Files\Microsoft visual studio\MyProjects\demo_GetFileVersionInfo\1.cpp(8) : error C2057: expected constant expression
D:\Program Files\Microsoft visual studio\MyProjects\demo_GetFileVersionInfo\1.cpp(8) : error C2466: cannot allocate an array of constant size 0
D:\Program Files\Microsoft visual studio\MyProjects\demo_GetFileVersionInfo\1.cpp(8) : error C2133: 'lpData' : unknown size
D:\Program Files\Microsoft visual studio\MyProjects\demo_GetFileVersionInfo\1.cpp(12) : error C2664: 'GetFileVersionInfoA' : cannot convert parameter 3 from 'char [260]' to 'unsigned long'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
Error executing cl.exe.demo_GetFileVersionInfo.exe - 5 error(s), 0 warning(s)
WORD wLanguage;
WORD wCodePage;
} *lpTranslate;void main()
{
char lptstrFilename[MAX_PATH]="E:\\NOTEPAD.EXE";
DWORD dwLen=0;
char *lpData=NULL ;
unsigned long iHandle;
BOOL success;
dwLen=GetFileVersionInfoSize(lptstrFilename,&iHandle);
lpData=new char[dwLen];
success=GetFileVersionInfo(lptstrFilename,iHandle,dwLen,lpData);
void *buf=NULL;
unsigned int len=0;
// success=VerQueryValue(lpData,"\\",&buf,&len);
// VS_FIXEDFILEINFO *pp=(VS_FIXEDFILEINFO*)buf;
// Read the list of languages and code pages.
VerQueryValue(lpData,
TEXT("\\VarFileInfo\\Translation"),
(LPVOID*)&lpTranslate,
&len);
// Read the file description for each language and code page.
char SubBlock[2048];
void *lpBuffer;
unsigned int dwBytes;
for( int i=0; i < (len/sizeof(struct LANGANDCODEPAGE)); i++ )
{
wsprintf( SubBlock,
TEXT("\\StringFileInfo\\%04x%04x\\FileDescription"),
lpTranslate[i].wLanguage,
lpTranslate[i].wCodePage);
// Retrieve file description for language and code page "i".
VerQueryValue(lpData,
SubBlock,
&lpBuffer,
&dwBytes);
}
delete []lpData;
}
Version.lib User32.lib
//#include "stdafx.h"#include<windows.h>
#include<iostream.h>#pragma comment(lib , "version.lib")
void main()
{
char lptstrFilename[MAX_PATH];
DWORD dwHandle;
BOOL success;
cout<<"please cin filename"<<endl;
cin>>lptstrFilename;
DWORD dwLen = GetFileVersionInfoSize(lptstrFilename,&dwHandle);
char *lpData =new char[dwLen*sizeof(char)]; success=GetFileVersionInfo(lptstrFilename,dwHandle,dwLen,lpData);
if(success)
{
cout<<lpData<<endl;
}
while(1);
}