有没有更优雅的方法用 AutoIt 获取 Internet Expolor 版本
Is there a more elegant way to get the Internet Expolor version with AutoIt
总结:
我正在寻找一种更优雅的方法来在 windows 计算机上获取 Internet Explorer (IE) 版本(尤其是使用 AutoIt,因为编译*。可执行程序)。我当前的解决方案(如下所示)可以完成这项工作,但也许有更好的方法使用纯 AutoIt 函数(UDF)?
背景及目标:
我必须检查特定的 IE 版本,通常检查低于 11 (11.0.9600) 的版本。
我必须检查大约 60 台设备(服务器、笔记本电脑等)。已编译的 *.exe 将找到版本并将该信息的条目(除了主机名等其他信息之外)设置为一个小的 HTML 报告。远程处理和执行不是问题。
代码:
#include-once
#include <Array.au3>
Func _getFileProperties( $sDirectory, $sFileName, $bRemoveEmptyLines = True )
Local $oShellApp = ObjCreate( 'Shell.Application' )
Local $oFolder = $oShellApp.NameSpace( $sDirectory )
Local $oFolderItem = $oFolder.Parsename( $sFileName )
Local $aPropertyList[1][2] = [[1]]
For $i = 0 To 400 Step 1
If $oFolder.GetDetailsOf( $oFolder.Items, $i ) Then
ReDim $aPropertyList[$aPropertyList[0][0] + 1][2]
$aPropertyList[$aPropertyList[0][0]][0] = $oFolder.GetDetailsOf( $oFolder.Items, $i )
$aPropertyList[$aPropertyList[0][0]][1] = $oFolder.GetDetailsOf( $oFolderItem, $i )
$aPropertyList[0][0] += 1
EndIf
Next
_ArraySort( $aPropertyList, 0, 1, 0 )
If $bRemoveEmptyLines Then
For $i = $aPropertyList[0][0] - 1 To 1 Step - 1
If $aPropertyList[$i][1] == '' Then _ArrayDelete( $aPropertyList, $i )
Next
EndIf
$aPropertyList[0][0] = UBound( $aPropertyList, 1 ) - 1
Return $aPropertyList
EndFunc
Global $aPropertyList = _getFileProperties( @SystemDir, 'ieframe.dll' )
_ArrayDisplay( $aPropertyList )
当前结果:
当然,我会根据我的搜索条件过滤数组(没问题)。
预期结果:
与上面(当前结果)基本相同,但可能速度更快,并且还具有 AutoIt own/native 功能?因为这只是将收集的许多其他信息的一个步骤,我尝试减少代码并提高未来编辑的可读性。
请注意,我可以检查
_getFileProperties( @SystemDir, 'ieframe.dll' )
或
_getFileProperties( $sPathIe, 'iexplore.exe' )
。
两者都提供了版本信息。
是否有其他更优雅且具有 AutoIt own/native 功能的方法来实现我的目标?
您也可以尝试检查注册表详细信息以验证 IE version.Hope这可能会帮助您通过其他方式找到它。
;Internet Explorer version is
Global $svcVersion = (RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer", "svcVersion"))
If $svcVersion <> "" Then
MsgBox(1, "internet Explorer Version" , "Internet Explorer version is: " & $svcVersion)
Endif
或
;Internet Explorer updated version is
Global $svcUpdateVersion = (RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer", "svcUpdateVersion"))
If $svcUpdateVersion <> "" Then
MsgBox(1, "internet Explorer Version" , "Internet Explorer updated version is: " & $svcUpdateVersion)
Endif
总结:
我正在寻找一种更优雅的方法来在 windows 计算机上获取 Internet Explorer (IE) 版本(尤其是使用 AutoIt,因为编译*。可执行程序)。我当前的解决方案(如下所示)可以完成这项工作,但也许有更好的方法使用纯 AutoIt 函数(UDF)?
背景及目标:
我必须检查特定的 IE 版本,通常检查低于 11 (11.0.9600) 的版本。
我必须检查大约 60 台设备(服务器、笔记本电脑等)。已编译的 *.exe 将找到版本并将该信息的条目(除了主机名等其他信息之外)设置为一个小的 HTML 报告。远程处理和执行不是问题。
代码:
#include-once
#include <Array.au3>
Func _getFileProperties( $sDirectory, $sFileName, $bRemoveEmptyLines = True )
Local $oShellApp = ObjCreate( 'Shell.Application' )
Local $oFolder = $oShellApp.NameSpace( $sDirectory )
Local $oFolderItem = $oFolder.Parsename( $sFileName )
Local $aPropertyList[1][2] = [[1]]
For $i = 0 To 400 Step 1
If $oFolder.GetDetailsOf( $oFolder.Items, $i ) Then
ReDim $aPropertyList[$aPropertyList[0][0] + 1][2]
$aPropertyList[$aPropertyList[0][0]][0] = $oFolder.GetDetailsOf( $oFolder.Items, $i )
$aPropertyList[$aPropertyList[0][0]][1] = $oFolder.GetDetailsOf( $oFolderItem, $i )
$aPropertyList[0][0] += 1
EndIf
Next
_ArraySort( $aPropertyList, 0, 1, 0 )
If $bRemoveEmptyLines Then
For $i = $aPropertyList[0][0] - 1 To 1 Step - 1
If $aPropertyList[$i][1] == '' Then _ArrayDelete( $aPropertyList, $i )
Next
EndIf
$aPropertyList[0][0] = UBound( $aPropertyList, 1 ) - 1
Return $aPropertyList
EndFunc
Global $aPropertyList = _getFileProperties( @SystemDir, 'ieframe.dll' )
_ArrayDisplay( $aPropertyList )
当前结果:
当然,我会根据我的搜索条件过滤数组(没问题)。
预期结果:
与上面(当前结果)基本相同,但可能速度更快,并且还具有 AutoIt own/native 功能?因为这只是将收集的许多其他信息的一个步骤,我尝试减少代码并提高未来编辑的可读性。
请注意,我可以检查 _getFileProperties( @SystemDir, 'ieframe.dll' )
或 _getFileProperties( $sPathIe, 'iexplore.exe' )
。
两者都提供了版本信息。
是否有其他更优雅且具有 AutoIt own/native 功能的方法来实现我的目标?
您也可以尝试检查注册表详细信息以验证 IE version.Hope这可能会帮助您通过其他方式找到它。
;Internet Explorer version is
Global $svcVersion = (RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer", "svcVersion"))
If $svcVersion <> "" Then
MsgBox(1, "internet Explorer Version" , "Internet Explorer version is: " & $svcVersion)
Endif
或
;Internet Explorer updated version is
Global $svcUpdateVersion = (RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer", "svcUpdateVersion"))
If $svcUpdateVersion <> "" Then
MsgBox(1, "internet Explorer Version" , "Internet Explorer updated version is: " & $svcUpdateVersion)
Endif