#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
浙公网安备 33010602011771号