Определить версию Internet Explorer с помощью VB6
Я обновляю устаревшее приложение, и оно имеет некоторые функции, которые обнаруживают установленную версию Internet Explorer, только для отображения и создания отчетов об ошибках, а не потому, что для этого требуются какие-либо компоненты. Код, используемый для определения версии IE, в основном представляет собой код из VBnet - DllGetVersion: подробная информация о версии Internet Explorer (автор: Кей-Кристиан Хансен, VBnet - Рэнди Берч). К сожалению, этот код не определяет версию IE больше, чем IE6.
Поэтому мне интересно, каков принятый в настоящее время VB6 метод определения установленной версии Internet Explorer?
Благодарю.
3 ответа
Вот класс, который я использую для получения информации о версии файла:
Опция Явные переменные хранения свойств Private m_strCompanyName в виде строки Private m_strFileDescription в виде строки Private m_strFileVersion в виде строки Private m_strInternalName в виде строки Private m_strCopyright в виде строки Private m_strOriginalFileName в виде строки Private m_strstringSigning. Приватный m_strLegalTrademark как строка Приватный объявить функцию GetFileVersionInfo Lib "Version.dll" Псевдоним "GetFileVersionInfoA" (ByVal lptstrFilename как строка, ByVal dwhandle как длинный, ByVal dwlen как длинный, lpData как любой) как длинный частный объявить функцию GetFileVisInfo Псевдоним "GetFileVersionInfoSizeA" (ByVal, lptstrFilename As String, lpdwHandle As Long), как частная, объявить функцию GetSystemDirectory Lib, "Kernel32". Alias "GetSystemDirectoryA" (ByVal Path, как String, ByVal, cbBytes, как долго), Long Long, объявить функцию l. Lib "Kernel32" Псевдоним "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As Long) в качестве длинного частного объявления Sub MoveMemory Lib "Kernel32" Alias "RtlMoveMemory" (dest в любом случае, источника ByVal в качестве Long, длины ByVal в качестве Long). Функция OpenFile Lib "Kernel32" (ByVal lpFileName As String, lpReOpenBuff в качестве OFSTRUCT, ByVal wStyle As Long) в качестве длинного закрытого объявления., puLen как долго) Как долго Закрытое константа OFS_MAXPATHNAME = 128 Закрытое константа OF_EXIST = & Закрытое константа H4000 INVALID_HANDLE_VALUE = -1 Закрытый тип OFSTRUCT cBytes как байт Функция GetVersionInfo(ByRef lpFile As String) в качестве логического Dim-буфера в виде String Dim rc в качестве Long Dim FullFileName в виде строки Dim sFName в виде строки Dim lBufferLen в виде Long Dim lDummy Как долго при ошибке GoTo errGetVersionInfo If FileExists(lpFile) Then buffer = String(255, 0) '*** Получить размер **** lBufferLen = GetFileVersionInfoSize(lpFile, lDummy) Если lBufferLen 0 Then Dim bytebuffer(255) в качестве байтового байтового буфера MoveMemory (0), lVerPointer, lBufferLen Dim Lang_Charset_String As String Dim HexNumber Как длинный HexNumber = CLng(байт-буфер (2)) + CLng(байт-буфер (3)) * &H100 + _ CLng(байт-буфер (0)) * и H10000 + CLng(1) (байт) (байт) &H1000000 Lang_Charset_String = Hex(HexNumber) "теперь мы меняем порядок идентификатора языка и кодовой страницы" и преобразуем его в строковое представление. 'Например, это может выглядеть как 040904E4 ' Или разделить все на части: '04------ = SUBLANG_ENGLISH_USA '--09---- = LANG_ENGLISH ' ----04E4 = 1252 = Кодовая страница для Windows: Многоязычный сделать пока Len(Lang_Charset_String) 0 Завершить, если 'lBufferLen INVALID_HANDLE_VALUE, то FileExists = True Else FileExists = False End, если конечное свойство свойства Friend Получать CompanyName() как String CompanyName = m_strCompanyName Конечное свойство Private Property Let CompanyName(ByNown_nameVal_name_name) vNameVown_nameVame vNameVown_nameVame vNameVown_nameVame vNameVame vName = By_name ving vame vName_name vName_Name_NameVING vING Trim $(vNewValue) Конечное свойство Friend Свойство Get FileDescription () As String FileDescription = m_strFileDescription Конечное свойство Private Property Пусть FileDescription(ByVal vNewValue As String) m_strFileDescription = Trim$(vNewValue) Конечное свойство Friend Свойство Get FileVersionVileSerf = m String Конечное свойство Закрытое свойство Let FileVersion(ByVal vNewValue As String) m_strFileVersion = Trim$(vNewValue) Конечное свойство Friend Свойство Get InternalName () As String InternalName = m_strInte Свойство rnalName Закрытое свойство Let Внутреннее имя (ByVal vNewValue As String) m_strInternalName = Trim$(vNewValue) Свойство End Свойство Friend Получите Copyright () As String Copyright = m_strCopyright Свойство End Private Закрытое свойство Let Copyright (ByVal vNewValue As String) m_strCopyright = Trim ($ vNewValue) Конечное свойство Friend Свойство Get OriginalFileName () As String OriginalFileName = m_strOriginalFileName Конечное свойство Private Property Let OriginalFileName(ByVal vNewValue As String) m_strOriginalFileName = Trim$(vNewValue) Конечное свойство Friend Свойство конечного свойства Свойство Let ProductName(ByVal vNewValue As String) m_strProductName = Trim$(vNewValue) Конечное свойство Friend Свойство Get ProductVersion () As String ProductVersion = m_strProductVersion Конечное свойство Private Property Let ProductVersion (ByVal vNewValue As String) m_strm $) Собственность друга Получить PrivateBuild () как String Prod uctVersion = m_strPrivateBuild Конечное свойство Закрытое свойство Let PrivateBuild (ByVal vNewValue As String) m_strPrivateBuild = Trim$(vNewValue) Конечное свойство Friend Свойство Get SpecialBuild () как строка $(vNewValue) Конечное свойство Friend Свойство Получить комментарии () As String Комментарии = m_strComments Конечное свойство Private Property Let Comments (ByVal vNewValue As String) m_strComments = vNewValue Конечное свойство Friend свойство Get LegalTrademark() As String LegalTrademark = m_strLegalTrademark Конечное свойство Private Property Let LegalTrademark(ByVal vNewValue As String) m_strLegalTrademark = vNewValue Конечное свойство
Это мои результаты для IE 8.
Название компании: Microsoft Corporation
Описание файла: Internet Explorer
Версия продукта: 8.00.6001.18702 (longhorn_ie8_rtm(wmbla).090308-0339)
Внутреннее имя: iexplore
Юридическое авторское право: © Microsoft Corporation. Все права защищены.
Исходное имя файла: IEXPLORE.EXE
Название продукта: Windows® Internet Explorer
Комментарии: Windows® Internet Explorer
Торговые марки: Windows® Internet Explorer
Версия файла: 8.00.6001.18702 (longhorn_ie8_rtm(wmbla).090308-0339)
Частная сборка:
Специальная сборка:
Вы можете получить доступ к реестру, чтобы сделать это.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Version.
Для IE 10 и выше вы должны проверить
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\svcVersion.
Посмотрите на KB 969393
Я искал вокруг, и я не мог ничего найти. Вид неясен по какой-то причине. Я нашел эту ссылку, где кто-то опубликовал решение, но я не могу получить его полностью!:) Я на самом деле не VB парень, так что, возможно, вы могли бы. Вот ссылка, если вы заинтересованы:
http://www.visualbasicscript.com/m_64130/tm.htm
Редактировать:
Я на самом деле пропустил какой-то код внизу этой страницы, и этот код, казалось, хорошо работал при получении версии IE. Я немного упростил его код:
Dim oFS = CreateObject("Scripting.FileSystemObject")
Dim version = oFS.GetFileVersion("c:\windows\system32\ieframe.dll")
MsgBox("Your IE version is: " & version)
Надеюсь это поможет!