Jump to content

AllenAA

Members
  • Posts

    12
  • Joined

  • Last visited

Community Answers

  1. AllenAA's post in About data stream extraction was marked as the answer   
    try this:
    #RequireAdmin #include-once #include <Array.au3> #include <ButtonConstants.au3> #include <ComboConstants.au3> #include <GUIConstants.au3> #include <ProgressConstants.au3> #include <WindowsConstants.au3> #include <FileConstants.au3> Opt("GUIOnEventMode", 1) ; Change to OnEvent mode Global $BoFile                                              ; boot.wim Path Global $MoFile                                              ; install.wim OR install.esd Path Global $DISM_PATH = @SystemDir & '\Dism.exe' Global $oDic , $iIndexSelected GuiMain() While 1     Sleep(80) ; Sleep to reduce CPU usage WEnd Func GuiMain()     Global $Main = GUICreate("MosBoot", 600, 300, -1, -1)     Global $BtnSoFileShow = GUICtrlCreateInput("install.wim Or install.esd", 16, 89, 465, 21,BitOR($ES_AUTOHSCROLL,$ES_READONLY))     Global $Panel = GUICtrlCreateGroup("", 8, 0, 584, 291)     Global $BtnSoFileFind = GUICtrlCreateButton("install", 507, 88, 75, 25)     GUICtrlSetOnEvent($BtnSoFileFind, "_SoFileFind")     Global $BtnStart = GUICtrlCreateButton("Start", 293, 220, 75, 25)     Global $BtnExit = GUICtrlCreateButton("Exit", 406, 220, 75, 25)     Global $ImageIteam = GUICtrlCreateCombo("Select", 16, 51, 566, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$ES_READONLY))     GUICtrlSetOnEvent($ImageIteam, "ImageIteam")     Global $Input2 = GUICtrlCreateInput("USB OR RAID Drivers", 16, 165, 465, 21,BitOR($ES_AUTOHSCROLL,$ES_READONLY))     Global $BtnBoot = GUICtrlCreateButton("boot", 507, 126, 75, 25)     Global $Input3 = GUICtrlCreateInput("boot.wim", 16, 127, 465, 21,BitOR($ES_AUTOHSCROLL,$ES_READONLY))     Global $BtnDrv = GUICtrlCreateButton("Drivers", 507, 164, 75, 25)     Global $Progress1 = GUICtrlCreateProgress(16, 20, 566, 17)     Local $iLeft = 8, $iTop = 1, $iWidth = 584, $iHeight = 291, $iColor = 0x142d01, $PanelCol = $GUI_BKCOLOR_TRANSPARENT ; 0xFFFFE0 ;     _GuiCtrlGroupSetColor($iLeft, $iTop, $iWidth, $iHeight, $iColor, $PanelCol) ; Panel - Colouring     GUISetState(@SW_SHOW)     _Initial()     GUISetOnEvent($GUI_EVENT_CLOSE, "_GUI_Event")     GUISetOnEvent($BtnExit, "_GUI_Event")     GUISetOnEvent($GUI_EVENT_MINIMIZE, "_GUI_Event")     GUISetOnEvent($GUI_EVENT_RESTORE, "_GUI_Event") EndFunc   ;==>Example Func ImageIteam()     $iIndexSelected = ""     Local $sReadCombo = GUICtrlRead($ImageIteam)     If StringLen($sReadCombo) = 0 Then Return SetError(1,0,'')     If Not IsObj($oDic) Then Return SetError(2,0,'')     If Not $oDic.Exists(String(StringToBinary($sReadCombo))) Then Return SetError(3,0,'')     $iIndexSelected = $oDic.Item(String(StringToBinary($sReadCombo)))     ConsoleWrite('+ Selected: ' & $iIndexSelected & @CRLF) EndFunc     Func _Initial()     If Not $DISM_PATH Or Not FileExists($DISM_PATH) Then MsgBox(48, "DISM", "Dism.exe is required.") EndFunc Func _SoFileFind()     Local $sFileOpenDialog = FileOpenDialog("Select Windows Image File", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", "Windows Image File (*.wim;*.esd)", $FD_FILEMUSTEXIST)     If @error Then Return SetError(1, 0, 0)     GUICtrlSetData($BtnSoFileShow, $sFileOpenDialog) ; Set the inputbox with the filepath.     $MoFile = $sFileOpenDialog     _GetImageInfo($MoFile) EndFunc Func _GetImageInfo($sWimFile)     Local $DISMp = Run($DISM_PATH & ' /Get-ImageInfo /ImageFile:' & $sWimFile & ' /English','','', $STDOUT_CHILD+$STDERR_CHILD)     Local $sRet , $aRet , $sStrCombo     While ProcessExists($DISMp)         $sRet &= StdoutRead($DISMp)     WEnd     $oDic = 0     $oDic = ObjCreate('Scripting.Dictionary')     $aRet = StringRegExp($sRet,'(?i)Index\h*:\h*(\d+)\s+Name\h*:\h*(\V+)',3)     If Not @error Then          For $i = 0 To UBound($aRet) - 1 Step 2             $sStrCombo &= '|' &$aRet[$i + 1]             $oDic.Add(String(StringToBinary($aRet[$i + 1])) , $aRet[$i])         Next             GUICtrlSetData($ImageIteam , $sStrCombo , $aRet[1])     EndIf     EndFunc Func _GUI_Event()     Switch @GUI_CtrlId         Case $GUI_EVENT_CLOSE             Exit         Case $BtnExit             GUIDelete($Main)             Exit         Case $GUI_EVENT_MINIMIZE             GUISetState(@SW_MINIMIZE, $Main)         Case Else             MsgBox(4096, "Error GUI Event", "UnKnow GUI Event !", 180, 12)     EndSwitch EndFunc Func _GuiCtrlGroupSetColor($iLeft, $iTop, $iWidth, $iHeight, $iBorderColor = 0x000000, $iBkGndCol0r = $GUI_BKCOLOR_TRANSPARENT)     GUICtrlCreateGraphic(-1, -1)     GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $iBorderColor, $iBkGndCol0r)     GUICtrlSetGraphic(-1, $GUI_GR_RECT, $iLeft, $iTop + 8, $iWidth, $iHeight - 7) EndFunc   ;==>_GuiCtrlGroupSetColor
×
×
  • Create New...