#include <GUIListBox.au3>
#include <GuiTreeView.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>

$Path = @ScriptDir & '\Driver.ini'
If FileExists($Path) = 0 Then
        MsgBox(0,"","配置文件不存在")
        Exit
EndIf
$aRegFitem = StringRegExp(FileRead($Path), '\[\d+\]', 3)
$aRegSitem = StringRegExp(FileRead($Path), '\[\d+-\d+\]', 3)

Local $aFitem[1][2], $aSitem[1][2]
Local $sItemText

$iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES)
GUICreate("TreeView项目勾选操作", 600, 450)
$TreeView1 = GUICtrlCreateTreeView(5, 5, 290, 380, $iStyle, $WS_EX_CLIENTEDGE)
$List1 = GUICtrlCreateListView("", 300, 5, 295, 380)
_GUICtrlListView_AddColumn($List1, "序号", 50)
_GUICtrlListView_AddColumn($List1, "信息", 230)

$But1 = GUICtrlCreateButton("读取被选项目", 100, 400, 100, 30, $WS_GROUP)
$But2 = GUICtrlCreateButton("开始模拟安装", 400, 400, 100, 30, $WS_GROUP)

$var = IniReadSectionNames($Path)
If Not @error Then
        For $i = 1 To $var[0]
                If StringIsDigit($var[$i]) Then
                                                $sFtext = IniRead($Path, $var[$i], 'Name', '')                                               
                                                ReDim $aFitem[UBound($aFitem)+1][2]
                        $aFitem[UBound($aFitem)-1][0] = GUICtrlCreateTreeViewItem($sFtext, $TreeView1)
                        GUICtrlSetState(-1, $GUI_CHECKED)
                        $aFitem[UBound($aFitem)-1][1] = $sFtext
                                                $aFitem[0][0] = UBound($aFitem) - 1
                Else
                        $sStext = IniRead($Path, $var[$i], 'Name', '')
                                                ReDim $aSitem[UBound($aSitem)+1][2]
                        $aSitem[UBound($aSitem)-1][0] = GUICtrlCreateTreeViewItem($sStext, $aFitem[$aFitem[0][0]][0])
                        GUICtrlSetState(-1, $GUI_CHECKED)
                        $aSitem[UBound($aSitem)-1][1] = $sStext
                                                $aSitem[0][0] = UBound($aSitem) - 1
                                        EndIf
        Next
EndIf

AddItem()

GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case - 3
                        Exit
                Case $aFitem[1][0] To $aFitem[$aFitem[0][0]][0] ;父项目
                        If BitAND(GUICtrlRead($nMsg), $GUI_CHECKED) Then ;如果父项目勾选,其下所有子项目全选。
                                $iSitemNumber = Number(_GUICtrlTreeView_GetChildCount($TreeView1, $nMsg))
                                For $i = $nMsg To $nMsg + $iSitemNumber
                                        GUICtrlSetState($i, $GUI_CHECKED)
                                Next
                        Else
                                $iSitemNumber = Number(_GUICtrlTreeView_GetChildCount($TreeView1, $nMsg))
                                For $i = $nMsg To $nMsg + $iSitemNumber
                                        GUICtrlSetState($i, $GUI_UNCHECKED)
                                Next
                        EndIf
                        ContinueCase
                Case $aSitem[1][0] To $aSitem[$aSitem[0][0]][0] ;子项目
                        If BitAND(GUICtrlRead($nMsg), $GUI_CHECKED) Then ;如果子项目勾选,其父项目也跟着勾选。
                                $hFitemHandle = _GUICtrlTreeView_GetParentParam($TreeView1, $nMsg)
                                GUICtrlSetState($hFitemHandle, $GUI_CHECKED)
                        Else ;父项目下的所有子项目全部取消勾选,父项目也跟着取消勾选。
                                $hFitemHandle = _GUICtrlTreeView_GetParentParam($TreeView1, $nMsg)
                                $iSitemNumber = Number(_GUICtrlTreeView_GetChildCount($TreeView1, $hFitemHandle))
                                For $i = $hFitemHandle To $hFitemHandle + $iSitemNumber
                                        If GUICtrlRead($i) = $GUI_CHECKED Then ExitLoop
                                        If $i = $hFitemHandle + $iSitemNumber Then GUICtrlSetState($hFitemHandle, $GUI_UNCHECKED)
                                Next
                        EndIf
                        AddItem()
                Case $But1
                        $sText = ''
                        For $i = 1 To $aSitem[0][0]
                                If _GUICtrlTreeView_GetChecked($TreeView1, $aSitem[$i][0]) Then
                                        $sText &= '被选项目句柄:' & $aSitem[$i][0] & '   ' & '项目文本:' & $aSitem[$i][1] & @CRLF
                                EndIf
                        Next
                        If $sText <> '' Then MsgBox(0, '获取被选项目句柄+项目文本', $sText)
                Case $But2
                        begin()
        EndSwitch
WEnd

Func AddItem()
        $sItemText = ''
        _GUICtrlListView_DeleteAllItems($List1) ;清空List内所有数据
        For $i = 1 To $aSitem[0][0]
                        If _GUICtrlTreeView_GetChecked($TreeView1, $aSitem[$i][0]) Then
                                GUICtrlCreateListViewItem(StringFormat("[%02d]", _GUICtrlListView_GetItemCount($List1)+1) & "|" & $aSitem[$i][1], $List1) ;如果项目被勾选则写入List
                                $sItemText &= $aSitem[$i][1] & '|'
                        EndIf
        Next
EndFunc

Func begin()
        $aLines = StringSplit($sItemText, '|', 2)
                GUICtrlSetState ($List1, $GUI_FOCUS)                ;此处要将焦点设置在 $List1 ,否则被选项的背景是灰的,不是蓝色
        For $i = 0 To UBound($aLines) - 1
                        _GUICtrlListView_SetItemText($List1, $i, '[→]')
                        _GUICtrlListView_SetItemSelected($List1, $i)
                        Sleep(800)
                        _GUICtrlListView_SetItemText($List1, $i, '[OK]')
                        _GUICtrlListView_SetItemSelected($List1, $i, False)
        Next
        MsgBox(0, '', '安装完成!')
EndFunc   ;==>begin

--------------------------------------------------------------------------------------------------------------------------------------

Driver.ini

--------------------------------------------------------------------------------------------------------------------------------------

[1]
Type=CPU
Name="CPU"
HwRptSec="CPU"
HwRptKey="CPU Properties|CPU Type"

[1-1]
Name="AMD"
KeyWords="AMD"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\CPU\AMD.7z"
Check=Auto

;[1-2]
;Name="Intel"
;KeyWords="Intel"
;Os="WIN_XP;WIN_2003"
;PcType="Desktop;Notebook"
;DrvPkg=""
;Check=Auto

[2]
Type=Chipset
Name="主板"
SubName1="北桥"
HwRptSec1="Chipset"
HwRptKey1="Chipset?|North Bridge Properties|North Bridge"
SubName2="南桥"
HwRptSec2="Chipset"
HwRptKey2="Chipset?|South Bridge Properties|South Bridge"

[2-1]
Name="ALi(ULi)"
KeyWords="ALi;ULi"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Board\ALi(ULi).7z"
Check=Auto

[2-2]
Name="AMD(ATi)"
KeyWords="AMD;ATI"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Board\Amd(ATi).7z"
Check=Auto

[2-3]
Name="Intel"
KeyWords="Intel"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Board\Intel.7z"
Check=Auto

[2-4]
Name="nVIDIA"
KeyWords="nVIDIA"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Board\nVIDIA.7z"
Check=Auto

[2-5]
Name="SiS"
KeyWords="SiS"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Board\SiS.7z"
Check=Auto

[2-6]
Name="VIA"
KeyWords="VIA"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Board\VIA.7z"
Check=Auto

[2-7]
Name="NoteBook"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Notebook"
DrvPkg="Drivers\Board\NoteBook.7z"
Check=Yes

[2-8]
Name="Other"
KeyWords=""
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Board\Other.7z"
Check=Yes
Other=1

[3]
Type=Video
Name="显示"
SubName1="板载"
HwRptSec1="Chipset"
HwRptKey1="Chipset?|Integrated Graphics Controller|Graphics Controller Type"
SubName2="显卡"
HwRptSec2="PCI / AGP Video"
HwRptKey2="PCI / AGP Video?"
SubName3="GPU"
HwRptSec3="GPU"
HwRptKey3="GPU?|Graphics Processor Properties|Video Adapter"

[3-1]
Name="AMD(ATi)"
KeyWords="AMD;ATi;Radeon"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Video\AMD(ATi).7z"
Check=Auto

[3-2]
Name="Intel"
KeyWords="Intel"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Video\Intel.7z"
Check=Auto

[3-3]
Name="nVIDIA"
KeyWords="nVIDIA;GeForce"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Video\nVIDIA.7z"
Check=Auto

[3-4]
Name="SIS"
KeyWords="SIS"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Video\SIS.7z"
Check=Auto

[3-5]
Name="VIA(S3)"
KeyWords="VIA;S3"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Video\VIA(S3).7z"
Check=Auto

[3-6]
Name="VMware"
KeyWords="VMware"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Video\VMware.7z"
Check=Auto

[3-7]
Name="Other"
KeyWords=""
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Video\Other.7z"
Check=Auto
Other=1

[4]
Type=Audio
Name="声音"
HwRptSec="PCI / PnP Audio"
HwRptKey="PCI / PnP Audio?"

[4-1]
Name="ADI"
KeyWords="Analog Devices"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Audio\adi.7z"
Check=Auto

[4-2]
Name="ATI"
KeyWords="ATI"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Audio\Realtek.7z"
Check=Auto

[4-3]
Name="C-Media"
KeyWords="C-Media"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Audio\C-Media.7z"
Check=Auto

[4-4]
Name="Conexant"
KeyWords="Conexant"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Audio\Conexant.7z"
Check=Auto

[4-5]
Name="Creative"
KeyWords="Creative"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Audio\Creative.7z"
Check=Auto

[4-6]
Name="HDAudio"
KeyWords="High Definition"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Audio\HDAudio.7z"
Check=Auto

[4-7]
Name="nVIDIA"
KeyWords="nVIDIA"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Audio\nVIDIA.7z"
Check=Auto

[4-8]
Name="Realtek"
KeyWords="Realtek;ATi"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Audio\Realtek.7z"
Check=Auto

[4-9]
Name="Sigmatel(IDT)"
KeyWords="Sigmatel;IDT"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Audio\Sigmatel(IDT).7z"
Check=Auto

[4-10]
Name="SiS"
KeyWords="SiS"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Audio\SiS.7z"
Check=Auto

[4-11]
Name="VIA"
KeyWords="VIA;Envy"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Audio\via.7z"
Check=Auto

[4-12]
Name="Other"
KeyWords=""
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Audio\Other.7z"
Check=Auto
Other=1

[5]
Type=Network
Name="网络"
HwRptSec="PCI / PnP Network"
HwRptKey="PCI / PnP Network?"

[5-1]
Name="3Com"
KeyWords="3Com"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Network\3Com.7z"
Check=Auto

[5-2]
Name="AMD"
KeyWords="AMD"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Network\AMD.7z"
Check=Auto

[5-3]
Name="Atheros"
KeyWords="Atheros"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Network\Atheros.7z"
Check=Auto

[5-4]
Name="Broadcom"
KeyWords="Broadcom"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Network\Broadcom.7z"
Check=Auto

[5-5]
Name="D-Link"
KeyWords="D-Link"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Network\D-Link.7z"
Check=Auto

[5-6]
Name="Intel"
KeyWords="Intel"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Network\Intel.7z"
Check=Auto

[5-7]
Name="Marvell"
KeyWords="Marvell"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Network\Marvell.7z"
Check=Auto

[5-8]
Name="nVIDIA"
KeyWords="nVIDIA"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Network\nVIDIA.7z"
Check=Auto

[5-9]
Name="Realtek"
KeyWords="Realtek"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Network\Realtek.7z"
Check=Auto

[5-10]
Name="SiS"
KeyWords="SiS"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Network\SiS.7z"
Check=Auto

[5-11]
Name="TP-Link"
KeyWords="TP-Link"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Network\TP-Link.7z"
Check=Auto

[5-12]
Name="ULI"
KeyWords="ULI"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Network\ULI.7z"
Check=Auto

[5-13]
Name="VIA"
KeyWords="VIA"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Network\VIA.7z"
Check=Auto

[5-14]
Name="Other"
KeyWords=""
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Network\Other.7z"
Check=Auto
Other=1

[6]
Type=Other
Name="磁盘控制器"
HwRptSec=""
HwRptKey=""

[6-1]
Name="Acard"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Desktop"
DrvPkg="Drivers\MassStorage.7z,Acard"
Check=Yes

[6-2]
Name="Adaptec"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Desktop"
DrvPkg="Drivers\MassStorage.7z,Adaptec"
Check=Yes

[6-3]
Name="Advansys"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Desktop"
DrvPkg="Drivers\MassStorage.7z,Advansys"
Check=Yes

[6-4]
Name="Amcc"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Desktop"
DrvPkg="Drivers\MassStorage.7z,Amcc"
Check=Yes

[6-5]
Name="Highpoint"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Desktop"
DrvPkg="Drivers\MassStorage.7z,Highpoint"
Check=Yes

[6-6]
Name="IBM"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Desktop"
DrvPkg="Drivers\MassStorage.7z,IBM"
Check=Yes

[6-7]
Name="ITE"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\MassStorage.7z,ITE"
Check=Yes

[6-8]
Name="JMicron"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\MassStorage.7z,JMicron"
Check=Yes

[6-9]
Name="LSIlogic"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Desktop"
DrvPkg="Drivers\MassStorage.7z,LSIlogic"
Check=Yes

[6-10]
Name="Marvell"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Desktop"
DrvPkg="Drivers\MassStorage.7z,Marvell"
Check=Yes

[6-11]
Name="Promise"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Desktop"
DrvPkg="Drivers\MassStorage.7z,Promise"
Check=Yes

[6-12]
Name="Qlogic"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Desktop"
DrvPkg="Drivers\MassStorage.7z,Qlogic"
Check=Yes

[6-13]
Name="SiliconImage"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Desktop"
DrvPkg="Drivers\MassStorage.7z,SiliconImage"
Check=Yes

[6-14]
Name="Tekram"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Desktop"
DrvPkg="Drivers\MassStorage.7z,Tekram"
Check=Yes

[7]
Type=Other
Name="Modem"
HwRptSec=""
HwRptKey=""

[7-1]
Name="Agere"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Notebook"
DrvPkg="Drivers\Modem.7z,Agere"
Check=Yes

[7-2]
Name="Aopen"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Notebook"
DrvPkg="Drivers\Modem.7z,Aopen"
Check=Yes

[7-3]
Name="Conexant"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Notebook"
DrvPkg="Drivers\Modem.7z,Conexant"
Check=Yes

[7-4]
Name="ESS"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Notebook"
DrvPkg="Drivers\Modem.7z,ESS"
Check=Yes

[7-5]
Name="Intel"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Notebook"
DrvPkg="Drivers\Modem.7z,Intel"
Check=Yes

[7-6]
Name="Motorola"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Notebook"
DrvPkg="Drivers\Modem.7z,Motorola"
Check=Yes

[7-7]
Name="Smartlink"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Notebook"
DrvPkg="Drivers\Modem.7z,Smartlink"
Check=Yes

[7-8]
Name="Topic"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Notebook"
DrvPkg="Drivers\Modem.7z,Topic"
Check=Yes

[8]
Type=Other
Name="摄像头"
HwRptSec=""
HwRptKey=""

[8-1]
Name="UsbCam"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Desktop;Notebook"
DrvPkg="Drivers\Camera.7z,UsbCam"
Check=auto

[8-2]
Name="NoteBook"
KeyWords="*"
Os="WIN_XP;WIN_2003"
PcType="Notebook"
DrvPkg="Drivers\Camera.7z,NoteBook"
Check=auto

posted on 2012-10-29 17:17  Jessica Lu  阅读(1576)  评论(0)    收藏  举报