Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mendapatkan maklumat versi daripada DLL dan EXE menggunakan Win32 API dalam C atau C?

Bagaimanakah saya boleh mendapatkan maklumat versi daripada DLL dan EXE menggunakan Win32 API dalam C atau C?

DDD
DDDasal
2024-11-01 08:23:02507semak imbas

How can I retrieve version information from DLLs and EXEs using Win32 API in C or C  ?

Mendapatkan Maklumat Versi untuk DLL dan EXE

Banyak aplikasi memerlukan keupayaan untuk mendapatkan semula maklumat versi daripada fail. Maklumat ini digunakan untuk tujuan paparan, seperti menunjukkan nombor versi pada kotak dialog sifat.

API Win32 menyediakan beberapa fungsi yang boleh digunakan untuk mendapatkan maklumat versi. Satu pendekatan biasa ialah menggunakan API GetFileVersionInfo.

Menggunakan GetFileVersionInfo

Fungsi GetFileVersionInfo mendapatkan semula maklumat tentang sumber versi fail. Langkah-langkah yang terlibat dalam menggunakan fungsi ini ialah:

  1. Panggil GetFileVersionInfo dengan laluan fail dan penuding kepada pembolehubah DWORD yang akan menerima pemegang kepada maklumat versi.
  2. Panggil GetFileVersionInfoSize dengan laluan fail dan pemegang dari langkah 1 untuk menentukan saiz maklumat versi.
  3. Peruntukkan penimbal saiz yang diambil dalam langkah 2.
  4. Panggil GetFileVersionInfo sekali lagi dengan laluan fail, kendalikan , saiz dan penunjuk kepada penimbal dari langkah 3 untuk mendapatkan semula maklumat versi.

Mengekstrak Data Versi

Setelah maklumat versi diperoleh semula, anda boleh menggunakan fungsi VerQueryValue untuk mengekstrak maklumat tertentu. Kod sampel berikut menunjukkan cara mengekstrak versi produk dan nombor versi fail:

LPSTR verData = new char[verSize];

if (GetFileVersionInfo(szVersionFile, verHandle, verSize, verData))
{
    if (VerQueryValue(verData, "\", (VOID FAR* FAR*)&lpBuffer, &size))
    {
        if (size)
        {
            VS_FIXEDFILEINFO *verInfo = (VS_FIXEDFILEINFO *)lpBuffer;
            if (verInfo->dwSignature == 0xfeef04bd)
            {
                TRACE("File Version: %d.%d.%d.%d\n",
                (verInfo->dwFileVersionMS >> 16) & 0xffff,
                (verInfo->dwFileVersionMS >> 0) & 0xffff,
                (verInfo->dwFileVersionLS >> 16) & 0xffff,
                (verInfo->dwFileVersionLS >> 0) & 0xffff
                );
            }
        }
    }
}

Dengan mengikuti langkah ini, anda boleh mendapatkan versi produk dan nombor versi fail secara pemrograman untuk fail DLL atau EXE menggunakan API asli Win32 dalam C atau C .

Atas ialah kandungan terperinci Bagaimanakah saya boleh mendapatkan maklumat versi daripada DLL dan EXE menggunakan Win32 API dalam C atau C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn