|
|
楼主 |
发表于 2010-5-14 18:35:30
|
显示全部楼层
我下班了,我明天再接着研究吧!下面是我在你基础上添加了代码!- #Region ;**** 参数创建于 ACNWrapper_GUI ****
- #AutoIt3Wrapper_outfile=立信科技.exe
- #AutoIt3Wrapper_Res_Fileversion=0.0.0.0
- #EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
- #include <Process.au3>
- #include <GuiListView.au3>
- #include <ListviewConstants.au3>
- #include <GUIConstantsEx.au3>
- #include <WindowsConstants.au3>
- FileInstall('PECMD.EXE', @TempDir & '\')
- FileInstall('dsptw.exe', @TempDir & '\')
- GUICreate("立信科技PE恢复系统", 545, 255)
- $ListView1 = GUICtrlCreateListView('驱动器|分区编号|分区状态|卷标|已用空间(Mb)|剩余空间(Mb)', 5, 5, 535, 200, $LVS_EX_GRIDLINES, $LVS_REPORT)
- $Bthf = GUICtrlCreateButton(' 还原系统 ', 10, 215, -1)
- ;$Btbf = GUICtrlCreateButton(' 备份系统 ', 110, -1)
- $Btg = GUICtrlCreateButton('手动GHOST32', 85, 215, -1)
- $Btp = GUICtrlCreateButton(' WINPM ', 210, -1)
- $Btd = GUICtrlCreateButton(' DiskGenius ', 270, -1)
- $BtSx = GUICtrlCreateButton('刷新/载入', 420, 215, -1)
- $BtExit = GUICtrlCreateButton(' 退 出 ', 490, 215, -1)
- GUISetState()
- _ld()
- While 1
- $nMsg = GUIGetMsg()
- Switch $nMsg
- Case $Bthf
- _CQHF()
- ;Run(@ComSpec & ' /c %systemroot%\GHOST32.EXE -clone,mode=pload,src=%CurDrv%\SYS\WINXPSP3.GHO:1,dst=%act% -crcignore -sure -fx', @TempDir, 0)
- FileDelete(@TempDir & '\diskinfo.txt')
- Case -3, $BtExit
- FileDelete(@TempDir & '\dsptw.exe')
- FileDelete(@TempDir & '\diskinfo.txt')
- Exit
- Case -3, $Btg
- Run(@ComSpec & ' /c ghost32.exe', @TempDir, 0)
- FileDelete(@TempDir & '\dsptw.exe')
- FileDelete(@TempDir & '\diskinfo.txt')
- Exit
- Case -3, $Btp
- RunWait(@ComSpec & ' /c %systemroot%\WINPM\WINPM.EXE', @TempDir, 0)
- FileDelete(@TempDir & '\diskinfo.txt')
- _ld()
- Case -3, $Btd
- RunWait(@ComSpec & ' /c %IniDrv%\SYS\diskgen\DiskGenius.exe', @TempDir, 0)
- FileDelete(@TempDir & '\diskinfo.txt')
- _ld()
- Case $BtSx
- FileDelete(@TempDir & '\diskinfo.txt')
- _ld()
- EndSwitch
- WEnd
- Func _ld()
- _GUICtrlListView_DeleteAllItems($ListView1)
- RunWait(@ComSpec & ' /c ' & @TempDir & '\dsptw.exe /A /PDR > diskinfo.txt', @TempDir, 0)
- Local $str = FileRead(@TempDir & '\diskinfo.txt'), $i, $dt
- Local $array = StringRegExp($str, '([^\t\r]*)[\t|\r]', 3)
- If @error Then Return MsgBox(48, '错误提示', '请确认当前系统分区的正确性')
- For $i = 2 To UBound($array) - 7 Step 6
- $dt = $array[$i] & '|' & $array[$i + 1] & '|' & $array[$i + 2] & '|' & $array[$i + 3] & '|' & $array[$i + 4] & '|' & $array[$i + 5]
- GUICtrlCreateListViewItem($dt, $ListView1)
- Next
- EndFunc ;==>_ld
- Func _CQHF()
- Dim $flag
- $flagg = ""
- ;_GUICtrlListView_DeleteAllItems($ListView1)
- RunWait(@ComSpec & ' /c ' & @TempDir & '\dsptw.exe /A /PDR > diskinfo.txt', @TempDir, 0)
- Local $strr = FileRead(@TempDir & '\diskinfo.txt')
- Local $sR = StringRegExp($strr, '([C-Z]:)\t(\d:\d+)\h*(\tA)\t', 3)
- If @error Then
- MsgBox(48, ' 错误提示', '请确认当前系统分区的正确性')
- Else
- Local $RS = $sR[UBound($sR) - 2]
- Select
- Case $RS = "3:1"
- $flag = MsgBox(1, "错误提示", '系统检测到您的电脑有多块硬盘(大于等于2块),不能自动进行GHOST还原.')
- Case $RS = "1:1"
- $flag = MsgBox(1, "请确认当前系统分区的正确性", ' 本地活动磁盘的盘符是:' & $sR[0] & '' & @CR & @CR & ' 对应的GHOST编号为:' & $sR[1] & '')
- ;$flag = MsgBox(1, "请确认当前系统分区的正确性", ' 当前系统检测U盘分区编号是1:1 ' & @CR & @CR & ' 本地活动磁盘的盘符是:' & $sR[0] & '' & @CR & @CR & ' 对应的GHOST编号为:' & $sR[1] & '')
- Case $RS = "2:1"
- ;$flag = MsgBox(1, "请确认当前系统分区的正确性", ' 当前系统检测U盘分区编号是2:1 ' & @CR & @CR & ' 本地活动磁盘的盘符是:' & $sR[0] & '' & @CR & @CR & ' 对应的GHOST编号为:' & $sR[1] & '')
- $flag = MsgBox(1, "请确认当前系统分区的正确性", ' 本地活动磁盘的盘符是:' & $sR[0] & '' & @CR & @CR & ' 对应的GHOST编号为:' & $sR[1] & '')
- ;$flag = MsgBox(1, "请确认当前系统检测磁盘分区的正确性", ' 本地活动磁盘的盘符是:' & $sR[0] & ''& @CR & @CR &' 对应的GHOST编号为:'& $sR[1] & ''& @CR & @CR &' 当前系统检测U盘分区编号是2:1 ' & @CR & @CR &' 驱动器 分区编号 分区状态' & @CR & @CR & ' ' & $sR[0] & ' ' & $sR[1] & ' ' & $sR[2] & ' ')
- EndSelect
- If $flag = 1 Then
- ;RunWait(@ComSpec & ' /c ' & @TempDir & '\PECMD.EXE ENVI $CP=' & $sR[0] & '', "", @SW_HIDE)
- RunWait(@ComSpec & ' /c ' & @TempDir & '\PECMD.EXE ENVI $HAO=' & $sR[1] & '', "", @SW_HIDE)
- MsgBox(1, "点击确定进行还原操作", '马上要进行还原操作,请确认文件已经备份' & @CR & @CR & ' 数据无价,请谨慎操作。')
- $g = '%systemroot%\GHOST32.EXE -clone,mode=pload,src=%IniDrv%\SYS\WINXPSP3.GHO:1,dst=%hao% -crcignore -sure -rb'
- RunWait(@ComSpec & ' /c ' & $g, "", 0)
- EndIf
- EndIf
- EndFunc ;==>_CQHF
复制代码 |
|