Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для AZJIO

Старожил


Сообщения: 265
Благодарности: 126

Профиль | Отправить PM | Цитировать


Вытащил код из Install_wim4.exe, страница описания и скачивания здесь

Код: Выделить весь код
$sPath = 'F:\sources\install.wim'
; Вытаскиваем метку WIM-файла
$sWimList = _Get_WimLabel($sPath)
If @error Then Exit MsgBox(0, "Ошибка", 'Не найдена метка wim-файла.' & @LF & 'Без метки извлечь wim-файл невозможно.')

$hGui = GUICreate('My Program', 250, 260)
$Def_Metka = StringLeft($sWimList, StringInStr($sWimList & '|', '|') - 1)
$iCombo = GUICtrlCreateCombo("", 10, 10, 190, 24)
GUICtrlSetData(-1, $sWimList, $Def_Metka)
GUISetState()
While 1
    Switch GUIGetMsg()
        Case -3
            Exit
    EndSwitch
WEnd

Func _Get_WimLabel($sPath)
    Local $s_WIM_List = ''
    $iPID = Run('imagex.exe /info /xml "' & $sPath & '"', @SystemDir, @SW_HIDE, 2) ; Вызываем с ключом экспорта онформации
    While 1
        $s_WIM_List &= StdoutRead($iPID, False, True) ; Чтение потока процесса
        If @error Then ExitLoop ; При ошибке выпрыг из цикла
    WEnd
    $aLabel = StringRegExp(BinaryToString($s_WIM_List, 2), "(?m)(?<=<NAME>)(.*?)(?=</NAME>)", 3) ; Вытаскиваем имя метки в тегах <NAME>
    If @error Then
        Return SetError(1, 0, '')
    Else
        $s_WIM_List = ''
        For $i = 0 To UBound($aLabel) - 1
            $s_WIM_List &= $aLabel[$i] & '|'
        Next
        Return SetError(0, 0, StringTrimRight($s_WIM_List, 1))
    EndIf
EndFunc   ;==>_Get_WimLabel

Последний раз редактировалось AZJIO, 12-08-2013 в 11:30.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:19, 12-08-2013 | #2