Есть ли более элегантный способ получить версию Internet Expolor с AutoIt? - PullRequest
0 голосов
/ 10 февраля 2019

Резюме:

Я ищу более элегантный способ получить версию Internet Explorer ( IE ) на компьютере с Windows (особенно с AutoIt,из-за скомпилированного * .exe).Мое текущее решение (следует ниже) выполнит эту работу, но, может быть, есть лучший способ с использованием чисто функций 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 )

Текущий результат:

ИзКонечно, я отфильтрую массив по моим критериям поиска (без проблем).

enter image description here

Ожидаемый результат:

Является ли в основном то же, что и выше (текущий результат), но, возможно, более быстрым способом, а также с собственными / собственными функциями AutoIt?Потому что это всего лишь шаг из множества другой информации, которую я собираю, и я пытаюсь уменьшить код и улучшить читаемость для будущих правок.

Обратите внимание, что я могу проверить_getFileProperties( @SystemDir, 'ieframe.dll' ) или для_getFileProperties( $sPathIe, 'iexplore.exe' ).Оба предоставляют информацию о версии.

Есть ли другой способ, более элегантный и собственный / родной для AutoIt, для достижения моей цели?

1 Ответ

0 голосов
/ 11 февраля 2019

Вы можете попытаться проверить данные реестра, а также проверить версию IE. Надеюсь, это поможет вам найти его другим способом.

;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
...