//プロジェクト名getversion001 C++ソースファイルgetversion001.cpp #include #include #pragma comment(lib, "version.lib") extern "C" { __declspec(dllexport) char * getversion(char * file01,char * property01,char * string01); __declspec(dllexport) char * getversionj(char * file01,char * property01,char * string01); __declspec(dllexport) char * getversione(char * file01,char * property01,char * string01); __declspec(dllexport) char * getversionn(char * file01,char * property01,char * string01); char * getversion(char * file01,char * property01,char * string01) { char getversion01[1024]; int done,len,n; LPVOID lpData; WORD lpwVerVal1; WORD lpwVerVal2; WORD lpwVerVal3; WORD lpwVerVal4; DWORD lpdwHandle = 0; DWORD Size = GetFileVersionInfoSize(file01, &lpdwHandle); UINT VersionLen; VS_FIXEDFILEINFO * pFileInfo; void * pvVersion; done = FALSE; if(Size != 0) { lpData = calloc(1,Size); if(lpData != NULL) { GetFileVersionInfo(file01, lpdwHandle, Size, lpData); if((VerQueryValue(lpData, TEXT("\\"), (LPVOID*)&pFileInfo, &VersionLen)) && !strcmp(property01,"FILEVERSION_INFO")) { lpwVerVal1 = HIWORD(pFileInfo->dwFileVersionMS); lpwVerVal2 = LOWORD(pFileInfo->dwFileVersionMS); lpwVerVal3 = HIWORD(pFileInfo->dwFileVersionLS); lpwVerVal4 = LOWORD(pFileInfo->dwFileVersionLS); sprintf(getversion01,"%d.%d.%d.%d\0", lpwVerVal1, lpwVerVal2, lpwVerVal3, lpwVerVal4); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\"), (LPVOID*)&pFileInfo, &VersionLen)) && !strcmp(property01,"PRODUCTVERSION_INFO")) { lpwVerVal1 = HIWORD(pFileInfo->dwProductVersionMS); lpwVerVal2 = LOWORD(pFileInfo->dwProductVersionMS); lpwVerVal3 = HIWORD(pFileInfo->dwProductVersionLS); lpwVerVal4 = LOWORD(pFileInfo->dwProductVersionLS); sprintf(getversion01,"%d.%d.%d.%d\0", lpwVerVal1, lpwVerVal2, lpwVerVal3, lpwVerVal4); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104b0\\FileDescription"), &pvVersion, &VersionLen)) && !strcmp(property01,"FileDescription")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104b0\\LegalCopyright"), &pvVersion, &VersionLen)) && !strcmp(property01,"LegalCopyright")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104b0\\FileVersion"), &pvVersion, &VersionLen)) && !strcmp(property01,"FileVersion")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104b0\\CompanyName"), &pvVersion, &VersionLen)) && !strcmp(property01,"CompanyName")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104b0\\OriginalFilename"), &pvVersion, &VersionLen)) && !strcmp(property01,"OriginalFilename")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104b0\\ProductVersion"), &pvVersion, &VersionLen)) && !strcmp(property01,"ProductVersion")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104b0\\ProductName"), &pvVersion, &VersionLen)) && !strcmp(property01,"ProductName")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104b0\\InternalName"), &pvVersion, &VersionLen)) && !strcmp(property01,"InternalName")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } free(lpData); } } if (done) { len=strlen(string01); n=strlen(getversion01); if (len>=n+1) { memcpy(string01,getversion01,n+1); } else { * string01='\0'; } } else { * string01='\0'; } return string01; } //言語が日本語Windows Multilingualの場合041104e4 char * getversionj(char * file01,char * property01,char * string01) { char getversion01[1024]; int done,len,n; LPVOID lpData; WORD lpwVerVal1; WORD lpwVerVal2; WORD lpwVerVal3; WORD lpwVerVal4; DWORD lpdwHandle = 0; DWORD Size = GetFileVersionInfoSize(file01, &lpdwHandle); UINT VersionLen; VS_FIXEDFILEINFO * pFileInfo; void * pvVersion; done = FALSE; if(Size != 0) { lpData = calloc(1,Size); if(lpData != NULL) { GetFileVersionInfo(file01, lpdwHandle, Size, lpData); if((VerQueryValue(lpData, TEXT("\\"), (LPVOID*)&pFileInfo, &VersionLen)) && !strcmp(property01,"FILEVERSION_INFO")) { lpwVerVal1 = HIWORD(pFileInfo->dwFileVersionMS); lpwVerVal2 = LOWORD(pFileInfo->dwFileVersionMS); lpwVerVal3 = HIWORD(pFileInfo->dwFileVersionLS); lpwVerVal4 = LOWORD(pFileInfo->dwFileVersionLS); sprintf(getversion01,"%d.%d.%d.%d\0", lpwVerVal1, lpwVerVal2, lpwVerVal3, lpwVerVal4); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\"), (LPVOID*)&pFileInfo, &VersionLen)) && !strcmp(property01,"PRODUCTVERSION_INFO")) { lpwVerVal1 = HIWORD(pFileInfo->dwProductVersionMS); lpwVerVal2 = LOWORD(pFileInfo->dwProductVersionMS); lpwVerVal3 = HIWORD(pFileInfo->dwProductVersionLS); lpwVerVal4 = LOWORD(pFileInfo->dwProductVersionLS); sprintf(getversion01,"%d.%d.%d.%d\0", lpwVerVal1, lpwVerVal2, lpwVerVal3, lpwVerVal4); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104e4\\FileDescription"), &pvVersion, &VersionLen)) && !strcmp(property01,"FileDescription")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104e4\\LegalCopyright"), &pvVersion, &VersionLen)) && !strcmp(property01,"LegalCopyright")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104e4\\FileVersion"), &pvVersion, &VersionLen)) && !strcmp(property01,"FileVersion")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104e4\\CompanyName"), &pvVersion, &VersionLen)) && !strcmp(property01,"CompanyName")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104e4\\OriginalFilename"), &pvVersion, &VersionLen)) && !strcmp(property01,"OriginalFilename")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104e4\\ProductVersion"), &pvVersion, &VersionLen)) && !strcmp(property01,"ProductVersion")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104e4\\ProductName"), &pvVersion, &VersionLen)) && !strcmp(property01,"ProductName")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\041104e4\\InternalName"), &pvVersion, &VersionLen)) && !strcmp(property01,"InternalName")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } free(lpData); } } if (done) { len=strlen(string01); n=strlen(getversion01); if (len>=n+1) { memcpy(string01,getversion01,n+1); } else { * string01='\0'; } } else { * string01='\0'; } return string01; } //言語が英語(米国)の場合040904b0 char * getversione(char * file01,char * property01,char * string01) { char getversion01[1024]; int done,len,n; LPVOID lpData; WORD lpwVerVal1; WORD lpwVerVal2; WORD lpwVerVal3; WORD lpwVerVal4; DWORD lpdwHandle = 0; DWORD Size = GetFileVersionInfoSize(file01, &lpdwHandle); UINT VersionLen; VS_FIXEDFILEINFO * pFileInfo; void * pvVersion; done = FALSE; if(Size != 0) { lpData = calloc(1,Size); if(lpData != NULL) { GetFileVersionInfo(file01, lpdwHandle, Size, lpData); if((VerQueryValue(lpData, TEXT("\\"), (LPVOID*)&pFileInfo, &VersionLen)) && !strcmp(property01,"FILEVERSION_INFO")) { lpwVerVal1 = HIWORD(pFileInfo->dwFileVersionMS); lpwVerVal2 = LOWORD(pFileInfo->dwFileVersionMS); lpwVerVal3 = HIWORD(pFileInfo->dwFileVersionLS); lpwVerVal4 = LOWORD(pFileInfo->dwFileVersionLS); sprintf(getversion01,"%d.%d.%d.%d\0", lpwVerVal1, lpwVerVal2, lpwVerVal3, lpwVerVal4); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\"), (LPVOID*)&pFileInfo, &VersionLen)) && !strcmp(property01,"PRODUCTVERSION_INFO")) { lpwVerVal1 = HIWORD(pFileInfo->dwProductVersionMS); lpwVerVal2 = LOWORD(pFileInfo->dwProductVersionMS); lpwVerVal3 = HIWORD(pFileInfo->dwProductVersionLS); lpwVerVal4 = LOWORD(pFileInfo->dwProductVersionLS); sprintf(getversion01,"%d.%d.%d.%d\0", lpwVerVal1, lpwVerVal2, lpwVerVal3, lpwVerVal4); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\040904b0\\FileDescription"), &pvVersion, &VersionLen)) && !strcmp(property01,"FileDescription")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\040904b0\\LegalCopyright"), &pvVersion, &VersionLen)) && !strcmp(property01,"LegalCopyright")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\040904b0\\FileVersion"), &pvVersion, &VersionLen)) && !strcmp(property01,"FileVersion")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\040904b0\\CompanyName"), &pvVersion, &VersionLen)) && !strcmp(property01,"CompanyName")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\040904b0\\OriginalFilename"), &pvVersion, &VersionLen)) && !strcmp(property01,"OriginalFilename")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\040904b0\\ProductVersion"), &pvVersion, &VersionLen)) && !strcmp(property01,"ProductVersion")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\040904b0\\ProductName"), &pvVersion, &VersionLen)) && !strcmp(property01,"ProductName")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\040904b0\\InternalName"), &pvVersion, &VersionLen)) && !strcmp(property01,"InternalName")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } free(lpData); } } if (done) { len=strlen(string01); n=strlen(getversion01); if (len>=n+1) { memcpy(string01,getversion01,n+1); } else { * string01='\0'; } } else { * string01='\0'; } return string01; } //言語がニュートラル言語の場合000004e4 char * getversionn(char * file01,char * property01,char * string01) { char getversion01[1024]; int done,len,n; LPVOID lpData; WORD lpwVerVal1; WORD lpwVerVal2; WORD lpwVerVal3; WORD lpwVerVal4; DWORD lpdwHandle = 0; DWORD Size = GetFileVersionInfoSize(file01, &lpdwHandle); UINT VersionLen; VS_FIXEDFILEINFO * pFileInfo; void * pvVersion; done = FALSE; if(Size != 0) { lpData = calloc(1,Size); if(lpData != NULL) { GetFileVersionInfo(file01, lpdwHandle, Size, lpData); if((VerQueryValue(lpData, TEXT("\\"), (LPVOID*)&pFileInfo, &VersionLen)) && !strcmp(property01,"FILEVERSION_INFO")) { lpwVerVal1 = HIWORD(pFileInfo->dwFileVersionMS); lpwVerVal2 = LOWORD(pFileInfo->dwFileVersionMS); lpwVerVal3 = HIWORD(pFileInfo->dwFileVersionLS); lpwVerVal4 = LOWORD(pFileInfo->dwFileVersionLS); sprintf(getversion01,"%d.%d.%d.%d\0", lpwVerVal1, lpwVerVal2, lpwVerVal3, lpwVerVal4); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\"), (LPVOID*)&pFileInfo, &VersionLen)) && !strcmp(property01,"PRODUCTVERSION_INFO")) { lpwVerVal1 = HIWORD(pFileInfo->dwProductVersionMS); lpwVerVal2 = LOWORD(pFileInfo->dwProductVersionMS); lpwVerVal3 = HIWORD(pFileInfo->dwProductVersionLS); lpwVerVal4 = LOWORD(pFileInfo->dwProductVersionLS); sprintf(getversion01,"%d.%d.%d.%d\0", lpwVerVal1, lpwVerVal2, lpwVerVal3, lpwVerVal4); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\000004e4\\FileDescription"), &pvVersion, &VersionLen)) && !strcmp(property01,"FileDescription")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\000004e4\\LegalCopyright"), &pvVersion, &VersionLen)) && !strcmp(property01,"LegalCopyright")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\000004e4\\FileVersion"), &pvVersion, &VersionLen)) && !strcmp(property01,"FileVersion")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\000004e4\\CompanyName"), &pvVersion, &VersionLen)) && !strcmp(property01,"CompanyName")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\000004e4\\OriginalFilename"), &pvVersion, &VersionLen)) && !strcmp(property01,"OriginalFilename")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\000004e4\\ProductVersion"), &pvVersion, &VersionLen)) && !strcmp(property01,"ProductVersion")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\000004e4\\ProductName"), &pvVersion, &VersionLen)) && !strcmp(property01,"ProductName")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } if((VerQueryValue(lpData, TEXT("\\StringFileInfo\\000004e4\\InternalName"), &pvVersion, &VersionLen)) && !strcmp(property01,"InternalName")) { sprintf(getversion01,"%s\0", pvVersion); done = TRUE; } free(lpData); } } if (done) { len=strlen(string01); n=strlen(getversion01); if (len>=n+1) { memcpy(string01,getversion01,n+1); } else { * string01='\0'; } } else { * string01='\0'; } return string01; } }