[英]Detect Internet Explorer Version using VB6
我正在更新舊版應用程序,它具有一些功能,可以檢測已安裝的Internet Explorer版本,僅用於顯示和錯誤報告,而無需任何組件。 用於IE版本檢測的代碼基本上是來自VBnet-DllGetVersion的代碼:詳細的Internet Explorer版本信息 (作者:Kay-Christian Hansen,VBnet-Randy Birch)。 不幸的是,此代碼無法檢測到大於IE6的IE版本。
因此,我想知道這些天用來檢測Internet Explorer安裝版本的VB6可接受的方法是什么?
謝謝。
您可以訪問注冊表來做到這一點。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Version.
對於IE 10及更高版本,您應檢查
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\svcVersion.
這是我用來獲取文件版本信息的類:
Option Explicit 'property storage variables Private m_strCompanyName As String Private m_strFileDescription As String Private m_strFileVersion As String Private m_strInternalName As String Private m_strCopyright As String Private m_strOriginalFileName As String Private m_strProductName As String Private m_strProductVersion As String Private m_strPrivateBuild As String Private m_strSpecialBuild As String Private m_strComments As String Private m_strLegalTrademark As String Private Declare Function GetFileVersionInfo Lib "Version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwhandle As Long, ByVal dwlen As Long, lpData As Any) As Long Private Declare Function GetFileVersionInfoSize Lib "Version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long Private Declare Function GetSystemDirectory Lib "Kernel32" Alias "GetSystemDirectoryA" (ByVal Path As String, ByVal cbBytes As Long) As Long Private Declare Function lstrcpy Lib "Kernel32" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As Long) As Long Private Declare Sub MoveMemory Lib "Kernel32" Alias "RtlMoveMemory" (dest As Any, ByVal Source As Long, ByVal Length As Long) Private Declare Function OpenFile Lib "Kernel32" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long Private Declare Function VerQueryValue Lib "Version.dll" Alias "VerQueryValueA" (pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, puLen As Long) As Long Private Const OFS_MAXPATHNAME = 128 Private Const OF_EXIST = &H4000 Private Const INVALID_HANDLE_VALUE = -1 Private Type OFSTRUCT cBytes As Byte fFixedDisk As Byte nErrCode As Long Reserved1 As Long Reserved2 As Long szPathName(OFS_MAXPATHNAME) As Byte End Type Public Function GetVersionInfo(ByRef lpFile As String) As Boolean Dim buffer As String Dim rc As Long Dim FullFileName As String Dim sFName As String Dim lBufferLen As Long Dim lDummy As Long On Error GoTo errGetVersionInfo If FileExists(lpFile) Then buffer = String(255, 0) '*** Get size **** lBufferLen = GetFileVersionInfoSize(lpFile, lDummy) If lBufferLen 0 Then Dim bytebuffer(255) As Byte MoveMemory bytebuffer(0), lVerPointer, lBufferLen Dim Lang_Charset_String As String Dim HexNumber As Long HexNumber = CLng(bytebuffer(2)) + CLng(bytebuffer(3)) * &H100 + _ CLng(bytebuffer(0)) * &H10000 + CLng(bytebuffer(1)) * &H1000000 Lang_Charset_String = Hex(HexNumber) 'now we change the order of the language id and code page 'and convert it into a string representation. 'For example, it may look like 040904E4 'Or to pull it all apart: '04------ = SUBLANG_ENGLISH_USA '--09---- = LANG_ENGLISH ' ----04E4 = 1252 = Codepage for Windows:Multilingual Do While Len(Lang_Charset_String) 0 End If 'lBufferLen INVALID_HANDLE_VALUE Then FileExists = True Else FileExists = False End If End Function Friend Property Get CompanyName() As String CompanyName = m_strCompanyName End Property Private Property Let CompanyName(ByVal vNewValue As String) m_strCompanyName = Trim$(vNewValue) End Property Friend Property Get FileDescription() As String FileDescription = m_strFileDescription End Property Private Property Let FileDescription(ByVal vNewValue As String) m_strFileDescription = Trim$(vNewValue) End Property Friend Property Get FileVersion() As String FileVersion = m_strFileVersion End Property Private Property Let FileVersion(ByVal vNewValue As String) m_strFileVersion = Trim$(vNewValue) End Property Friend Property Get InternalName() As String InternalName = m_strInternalName End Property Private Property Let InternalName(ByVal vNewValue As String) m_strInternalName = Trim$(vNewValue) End Property Friend Property Get Copyright() As String Copyright = m_strCopyright End Property Private Property Let Copyright(ByVal vNewValue As String) m_strCopyright = Trim$(vNewValue) End Property Friend Property Get OriginalFileName() As String OriginalFileName = m_strOriginalFileName End Property Private Property Let OriginalFileName(ByVal vNewValue As String) m_strOriginalFileName = Trim$(vNewValue) End Property Friend Property Get ProductName() As String ProductName = m_strProductName End Property Private Property Let ProductName(ByVal vNewValue As String) m_strProductName = Trim$(vNewValue) End Property Friend Property Get ProductVersion() As String ProductVersion = m_strProductVersion End Property Private Property Let ProductVersion(ByVal vNewValue As String) m_strProductVersion = Trim$(vNewValue) End Property Friend Property Get PrivateBuild() As String ProductVersion = m_strPrivateBuild End Property Private Property Let PrivateBuild(ByVal vNewValue As String) m_strPrivateBuild = Trim$(vNewValue) End Property Friend Property Get SpecialBuild() As String ProductVersion = m_strSpecialBuild End Property Private Property Let SpecialBuild(ByVal vNewValue As String) m_strSpecialBuild = Trim$(vNewValue) End Property Friend Property Get Comments() As String Comments = m_strComments End Property Private Property Let Comments(ByVal vNewValue As String) m_strComments = vNewValue End Property Friend Property Get LegalTrademark() As String LegalTrademark = m_strLegalTrademark End Property Private Property Let LegalTrademark(ByVal vNewValue As String) m_strLegalTrademark = vNewValue End Property
這些是我對IE 8的搜索結果。
公司名稱:微軟公司
文件描述: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)
私人構建:
特殊構建:
我四處搜尋,卻找不到任何東西。 由於某種原因有些晦澀。 我確實在有人發布解決方案的地方找到了此鏈接,但我無法使其完全正常運行! :)我不是真正的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)
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.