В проекте производится запуск внешнего приложения. Необходимо проверить, та ли версия внешней prog.exe запускается. Для начала вроде как надо извлечь версию из атрибутов prog.exe, чтобы затем сравнить её с записанным значением.
Нашел вариант кода получения версии файла в C++ Builder и пытаюсь переделать его для IDE Code::Blocks (компилятор MinGW):
#include <windows.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
String __fastcall TForm1::GetVer(String FileName)
{
String Version;
DWORD h;
DWORD Size = GetFileVersionInfoSize(FileName.c_str(), &h);
if (Size == 0)
{
Version = L"неизвестно";
return Version;
}
TCHAR *buf;
buf = (TCHAR *)GlobalAlloc(GMEM_FIXED, Size);
if (GetFileVersionInfo(FileName.c_str(), h, Size, buf) != 0)
{
PVSFixedFileInfo ValueBuf;
UINT Len;
if (VerQueryValue(buf, L"\\", &(void *)ValueBuf, &Len) != 0)
Version = String().sprintf(L"%d.%d.%d.%d",
HIWORD(ValueBuf->dwFileVersionMS),
LOWORD(ValueBuf->dwFileVersionMS),
HIWORD(ValueBuf->dwFileVersionLS),
LOWORD(ValueBuf->dwFileVersionLS));
}
GlobalFree(buf);
return Version;
}
Что не хватает для компиляции?
1)
int main(int argc, char* argv[])
Совершенно непонятная строка. Что она должна делать?
2) MinGW
ничего не знает про String
. Замените на что-то более переносимое, начиная от простого wchar_t
и заканчивая std::string
.
3)
String __fastcall TForm1::GetVer(String FileName) {
Это - реализация какой-то сущности, которая у вас отсутствует, и для решения задачи не нужна вообще. Опишите обычную функцию:
static ваш_строковый_тип GetVer(ваш_строковый_тип FileName) {
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как сравнивать вводимые слова со всеми ключевыми?
Помогите мне, пожалуйста, решить эту задачу, а также объяснить, как получается ответ в первом тесте
Найдите количество инверсий в лексикографически K-ой перестановке чисел от 1 до N