PE安装器(一键安装PE到硬盘)

#Region ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
#AccAu3Wrapper_Icon=D:\多彩图标\apps\brave.ico
#AccAu3Wrapper_Outfile=C:\Users\Administrator\Desktop\一键安装PE到硬盘.exe
#AccAu3Wrapper_UseX64=n
#AccAu3Wrapper_Res_Comment=一键安装PE
#AccAu3Wrapper_Res_Description=一键安装PE
#AccAu3Wrapper_Res_Fileversion=1.0.0.62
#AccAu3Wrapper_Res_LegalCopyright=重庆麻花腾@2021
#AccAu3Wrapper_Res_Language=2052
#AccAu3Wrapper_Res_requestedExecutionLevel=highestAvailable
#AccAu3Wrapper_Add_Constants=y
#AccAu3Wrapper_Run_Tidy=y
#AccAu3Wrapper_Run_Au3Stripper=y
#Au3Stripper_Parameters=/sf=0 /sv=0
#AccAu3Wrapper_Antidecompile=y
#EndRegion ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
; *** AutoIt3Wrapper 开始 ***
#include <EditConstants.au3>
; *** AutoIt3Wrapper 结束 ***
; *** AutoIt3Wrapper 开始 ***
#include <APIErrorsConstants.au3>
; *** AutoIt3Wrapper 结束 ***
; *** AutoIt3Wrapper 开始 ***
#include <ButtonConstants.au3>
; *** AutoIt3Wrapper 结束 ***
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <Constants.au3>
#include <AutoItConstants.au3>
#include <guiConstants.au3>
#include <WinAPI.au3>
#include <WinAPIFiles.au3>
#include <Process.au3>
_WinAPI_Wow64EnableWow64FsRedirection(False)
FileSetAttrib(@ScriptDir & "\pf.ini", "+h", 1)
If IniRead(@ScriptDir & "\PF.ini", "PF", "PF", "") = 1 Then
    _SKIN()
Else
    If IniRead(@ScriptDir & "\PF.ini", "PF", "PF", "") = 2 Then
        _SKIN1()
    EndIf
EndIf
If FileExists(@ScriptDir & "\WindowsPE\boot.wim") Then
Else
    DirCreate(@ScriptDir & "\WindowsPE")
    FileInstall("D:\au3\qt\WindowsPE\boot.sdi", @ScriptDir & "\WindowsPE\boot.sdi", 1)
    FileInstall("D:\au3\qt\WindowsPE\bootmgfw.efi", @ScriptDir & "\WindowsPE\bootmgfw.efi", 1)
    FileInstall("D:\au3\qt\WindowsPE\pesetup.exe", @ScriptDir & "\WindowsPE\pesetup.exe", 1)
    MsgBox(262176, "提示!", "没有发现当前目录WindowsPE文件夹里有PE内核文件," _
             & @CRLF & "请将PE内核文件放在当前目录WindowsPE下并命名为:" _
             & @CRLF & "                 7PE.wim、8PE.wim、boot.wim" _
             & @CRLF & "最低要求里面必须有一个PE内核才能运行," _
             & @CRLF & "退出后请按要求执行!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
    Exit
EndIf
$mht = GUICreate("一键安装PE到硬盘(在线重装)", 650, 400)
;~ GUICtrlSetDefBkColor(0x0080FF)
GUICtrlCreateGroup("", 2, 64, 646, 335)
GUICtrlCreateGroup("", 8, 110, 337, 260)
GUICtrlCreateGroup("", 350, 110, 290, 260)
FileInstall("D:\au3\QT\10.JPG", @TempDir & "\10.JPG", 1)
$pic = GUICtrlCreatePic(@TempDir & "\10.JPG", 0, 0, 650, 62)
GUICtrlSetState($pic, 128)
FileDelete(@TempDir & "\10.jpg")
GUICtrlCreateLabel("", 10, 107, 630, 1, $SS_BLACKRECT)
GUICtrlCreateLabel("计算机信息", 20, 78, 165, 24, BitOR(0x1, 0x0300))
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlSetColor(-1, 0x000000)
$os = GUICtrlCreateLabel("□极速下载原版系统", 190, 78, 130, 24, BitOR(0x1, 0x0300))
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetTip(-1, "下载后安装 PE,进入PE时会自动挂载下载的光盘镜像," _
         & @CRLF & "并通过一键安装系统,这就是在线一键重装的原理 " _
         & @CRLF & "前提:必须用麻花腾PE内核才行。")
$ML = GUICtrlCreateLabel("文件目录:WindowsPE", 335, 78, 150, 24, BitOR(0x1, 0x0300))
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlSetColor(-1, 0x000000)
$dx = GUICtrlCreateLabel("", 490, 78, 150, 24, BitOR(0x1, 0x0300))
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetTip(-1, "目录为当前目录(WindowsPE)请将PE内核文件放在此目录")
GUICtrlCreateLabel("安装到:", 400, 124, 60, 24, BitOR(0x1, 0x0300))
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlSetColor(-1, 0x000000)
$cd = GUICtrlCreateCombo("", 465, 122, 100, 20)
GUICtrlSetData($cd, "D|C", "C")
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
$PF = GUICtrlCreateCheckbox("", 585, 122, 20, 24)
GUICtrlSetTip(-1, "更换主题")
$mr = GUICtrlCreateCheckbox("", 610, 122, 20, 24)
GUICtrlSetTip(-1, "恢复默认")
GUICtrlCreateLabel("", 355, 156, 280, 1, $SS_BLACKRECT)
$7PE = GUICtrlCreateRadio("Win7PE", 375, 171, 70, 20, $BS_CENTER, $BS_VCENTER)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetState($7PE, 128)
$8PE = GUICtrlCreateRadio("Win8PE", 460, 171, 70, 20, $BS_CENTER, $BS_VCENTER)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetState($8PE, 128)
$10PE = GUICtrlCreateRadio("Win10PE", 545, 171, 70, 20, $BS_CENTER, $BS_VCENTER)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlSetColor(-1, 0x000000)
GUICtrlCreateLabel("", 355, 210, 280, 1, $SS_BLACKRECT)
$sr = GUICtrlCreateLabel("✈", 365, 230, 20, 20, BitOR(0x1, 0x0300))
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlSetColor(-1, 0x000000)
$sn = GUICtrlCreateInput("☆☆☆☆", 395, 230, 60, 20, $ES_PASSWORD, BitOR(0x1, 0x0300))
GUICtrlSetFont(-1, 8.5, 400, 1, "微软雅黑")
$js = GUICtrlCreateCheckbox("解锁", 475, 230, 70, 20, $BS_CENTER, $BS_VCENTER)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlSetColor(-1, 0x000000)
$ss = GUICtrlCreateCheckbox("上锁", 560, 230, 70, 20, $BS_CENTER, $BS_VCENTER)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlSetColor(-1, 0x000000)
GUICtrlCreateLabel("", 355, 270, 280, 1, $SS_BLACKRECT)
$reboot = GUICtrlCreateCheckbox("安装后是否重启电脑进入PE?", 400, 285, 190, 24, $BS_CENTER, $BS_VCENTER)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlSetColor(-1, 0x000000)
$Pro2 = GUICtrlCreateProgress(8, 375, 634, 16)
GUICtrlSetState($10PE, 128)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlCreateLabel("", 355, 318, 280, 1, $SS_BLACKRECT)
$TS = GUICtrlCreateLabel("需要帮助请加QQ群:171400760", 360, 335, 275, 30, BitOR(0x1, 0x0300))
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlSetColor(-1, 0x000000)
GUICtrlCreateLabel("CPU:", 15, 125, 40, 30, $SS_LEFT)
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
$cpu = GUICtrlCreateLabel("", 60, 125, 280, 30, $SS_LEFT)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlCreateLabel("显卡:", 15, 160, 40, 30, $SS_LEFT)
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
$display = GUICtrlCreateLabel("", 60, 160, 280, 30, $SS_LEFT)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlCreateLabel("声卡:", 15, 195, 40, 30, $SS_LEFT)
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
$sound = GUICtrlCreateLabel("", 60, 195, 280, 30, $SS_LEFT)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlCreateLabel("网卡:", 15, 230, 40, 30, $SS_LEFT)
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
$network = GUICtrlCreateLabel("", 60, 230, 280, 30, $SS_LEFT)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlCreateLabel("内存:", 15, 265, 40, 30, $SS_LEFT)
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
$mem = GUICtrlCreateLabel("", 60, 265, 280, 30, $SS_LEFT)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlCreateLabel("系统:", 15, 300, 40, 30, $SS_LEFT)
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
$oss = GUICtrlCreateLabel("", 60, 300, 280, 30, $SS_LEFT)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlCreateLabel("引导:", 15, 335, 40, 30, $SS_LEFT)
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
$ub = GUICtrlCreateLabel("", 60, 335, 280, 30, $SS_LEFT)
GUICtrlSetFont(-1, 9, 400, 1, "微软雅黑")
GUICtrlCreateLabel("", 10, 372, 630, 1, $SS_BLACKRECT)
info()
_ub()
GUISetState(@SW_SHOW)
FileInstall("D:\AU3\bat\SystemDownload.cmd", @TempDir & "\2.cmd", 1)
$iSize = DirGetSize(@ScriptDir & "\WindowsPE\", 0)
GUICtrlSetData($dx, "文件总大小: " & Round($iSize / 1024 / 1024000, 2) & 'GB')
If IniRead(@ScriptDir & "\sn.ini", "sn", "sn", "") = '1435' Then
    _kx()
    GUICtrlSetData($js, "已解锁")
    GUICtrlSetData($ss, "上锁")
Else
EndIf
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $mr
            IniWrite(@ScriptDir & "\PF.ini", "PF", "PF", "0")
            Run("一键安装PE到硬盘.exe")
            Exit
        Case $PF
            If _IsChecked($PF) Then
                _SKIN()
                IniWrite(@ScriptDir & "\PF.ini", "PF", "PF", "1")
            Else
                _SKIN1()
                IniWrite(@ScriptDir & "\PF.ini", "PF", "PF", "2")
            EndIf
        Case $os
            ShellExecuteWait(@TempDir & "\2.cmd")
            ProcessWaitClose("cmd.exe")
            GUICtrlSetData($TS, "正在移动文件到D盘,请稍候")
            _Move()
            GUICtrlSetData($TS, "党和人民交给的任务光荣完成!")
            Sleep(2000)
            GUICtrlSetData($TS, "需要帮助请加QQ群:171400760")
        Case $ss
            FileDelete(@ScriptDir & "\sn.ini")
            GUICtrlSetData($ss, "已上锁")
            GUICtrlSetData($js, "解锁")
            GUICtrlSetState($js, 4)
            GUICtrlSetData($sn, "☆☆☆☆")
            _kxx()
        Case $js
            SN()
            GUICtrlSetData($sn, "☆☆☆☆")
        Case $7PE
            If GUICtrlRead($cd, 1) = 'C' Then
                DirRemove("D:\WindowsPE", 1)
                _7Pe()
            Else
                If GUICtrlRead($cd, 1) = 'D' Then
                    DirRemove("C:\WindowsPE", 1)
                    _7PeD()
                EndIf
            EndIf
        Case $8PE
            If GUICtrlRead($cd, 1) = 'C' Then
                DirRemove("D:\WindowsPE", 1)
                _8Pe()
            Else
                If GUICtrlRead($cd, 1) = 'D' Then
                    DirRemove("C:\WindowsPE", 1)
                    _8PeD()
                EndIf
            EndIf
        Case $10PE
            If GUICtrlRead($cd, 1) = 'C' Then
                DirRemove("D:\WindowsPE", 1)
                _10Pe()
            Else
                If GUICtrlRead($cd, 1) = 'D' Then
                    DirRemove("C:\WindowsPE", 1)
                    _10PeD()
                EndIf
            EndIf
        Case $sn
            IniWrite(@ScriptDir & "\sn.ini", "sn", "sn", GUICtrlRead($sn))
            FileSetAttrib(@ScriptDir & "\sn.ini", "+h")
        Case $reboot
            If _IsChecked($reboot) Then
                GUICtrlSetData($reboot, "安装后直接重启电脑进入PE")
            Else
                GUICtrlSetState($reboot, 4)
                GUICtrlSetData($reboot, "安装后是否重启电脑进入PE?")
            EndIf
    EndSwitch
WEnd
Func info()
    $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    $colSettings = $objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
    $colMemory = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    $colCPU = $objWMIService.ExecQuery("Select * from CIM_Processor")
    $colVideoinfo = $objWMIService.ExecQuery("Select * from Win32_VideoController")
    $colSound = $objWMIService.ExecQuery("Select * from Win32_SoundDevice")
    $colMouse = $objWMIService.ExecQuery("Select * from Win32_PointingDevice")
    $colMonitor = $objWMIService.ExecQuery("Select * from Win32_DesktopMonitor")
    $colNIC = $objWMIService.ExecQuery("Select * from Win32_NetworkAdapter WHERE Netconnectionstatus = 2")
    For $object In $colCPU
        GUICtrlSetData($cpu, StringStripWS($object.Name, 1))
    Next
    For $object In $colVideoinfo
        GUICtrlSetData($display, StringStripWS($object.Description, 1))
    Next
    For $object In $colSound
        GUICtrlSetData($sound, StringStripWS($object.Description, 1))
    Next
    For $object In $colNIC
        GUICtrlSetData($network, StringStripWS($object.name, 1))
    Next
    For $objOperatingSystem In $colSettings
        GUICtrlSetData($oss, $objOperatingSystem.Caption) ; & $objOperatingSystem.BuildNumber)
    Next
    For $object In $colMemory
        GUICtrlSetData($mem, String(Round(Number($object.TotalPhysicalMemory) / (1024 * 1024 * 1024))) & " GB")
    Next
EndFunc   ;==>info

Func _ub()
    DllCall("Kernel32.dll", "dword", "GetFirmwareEnvironmentVariableW", "wstr", "", "wstr", '{00000000-0000-0000-0000-000000000000}', "wstr", Null, "dword", 0)
    If _WinAPI_GetLastError() = $ERROR_INVALID_FUNCTION Then
        GUICtrlSetData($ub, '本机引导方式为:' & ' ' & 'BIOS')
    Else
        GUICtrlSetData($ub, '本机引导方式为:' & ' ' & 'UEFI')
    EndIf
EndFunc   ;==>_ub
Func _Move()
    If FileExists("C:\Users\Public\Desktop\Windows10_x64_zh-cn.iso") Then
        FileMove("C:\Users\Public\Desktop\Windows10_x64_zh-cn.iso", "D:\XT\", 1 + 8)
    Else
        If FileExists("C:\Users\Public\Desktop\Windows7_x64_zh-cn.iso") Then
            FileMove("C:\Users\Public\Desktop\Windows7_x64_zh-cn.iso", "D:\XT\", 1 + 8)
        Else
            If FileExists("C:\Users\Public\Desktop\Windows11_x64_zh-cn.iso") Then
                FileMove("C:\Users\Public\Desktop\Windows11_x64_zh-cn.iso", "D:\XT\", 1 + 8)
            EndIf
        EndIf
    EndIf
EndFunc   ;==>_Move
Func _REBOOT()
    GUICtrlSetData($reboot, "安装后直接重启电脑进入PE")
    If _IsChecked($reboot) Then
        RunWait(@ComSpec & ' /c ' & 'bcdedit /bootsequence {ffffffff-3600-11de-8e71-fffffffffffe}', '', @SW_HIDE)
        Shutdown(2)
    Else
        GUICtrlSetState($reboot, 4)
        GUICtrlSetData($reboot, "安装后是否重启电脑进入PE?")
    EndIf
EndFunc   ;==>_REBOOT

Func _kx()
    GUICtrlSetState($7PE, 64)
    GUICtrlSetState($8PE, 64)
    GUICtrlSetState($10PE, 64)
EndFunc   ;==>_kx
Func _kxx()
    GUICtrlSetState($7PE, 128)
    GUICtrlSetState($8PE, 128)
    GUICtrlSetState($10PE, 128)
EndFunc   ;==>_kxx

Func SN()
    $snn = GUICtrlRead($sn) = '1435'
    If $js = $snn Then
        _kx()
        GUICtrlSetData($js, "已解锁")
        GUICtrlSetState($js, 1)
        GUICtrlSetData($ss, "上锁")
        GUICtrlSetState($ss, 4)
    Else
        MsgBox(266272, "特别提示!!!", "        密码错误,如已赞助请再次输入。如果你没有赞助, " _
                 & @CRLF & "请加微信(w14358899)赞助10元告诉你密码!谢谢理解!")
        GUICtrlSetState($js, 4)
        GUICtrlSetData($js, "解锁")
    EndIf
EndFunc   ;==>SN
Func _bat()
    If FileExists("C:\WindowsPE\boot.wim") Then
        FileInstall("D:\au3\bat\bcdc.exe", @TempDir & "\", 1)
        RunWait(@TempDir & "\bcdc.exe")
        Sleep(1000)
        FileDelete("C:\WindowsPE\10PE.wim")
        FileDelete("C:\WindowsPE\8PE.wim")
        FileDelete("C:\WindowsPE\7PE.wim")
        FileDelete(@TempDir & "\bcdc.exe")
        _REBOOT()
        GUICtrlSetData($TS, "安装完成,进入PE请按快捷键(Ctrl+Alt+A)")
        Sleep(5000)
        GUICtrlSetData($TS, "需要帮助请加QQ群:17140076")
        FileCreateShortcut("C:\WindowsPE\pesetup.exe", "C:\ProgramData\Microsoft\Windows\Start Menu\一键进入PE(Ctrl+Alt+A)", "C:\WindowsPE\pesetup.exe", "", "", "C:\WindowsPE\pesetup.exe", "^!a")
    Else
        If FileExists("D:\WindowsPE\boot.wim") Then
            FileInstall("D:\au3\bat\bcdd.exe", @TempDir & "\", 1)
            RunWait(@TempDir & "\bcdd.exe")
            Sleep(1000)
            FileDelete("C:\WindowsPE\10PE.wim")
            FileDelete("C:\WindowsPE\8PE.wim")
            FileDelete("C:\WindowsPE\7PE.wim")
            FileDelete(@TempDir & "\bcdd.exe")
            _REBOOT()
            GUICtrlSetData($TS, "安装完成,进入PE请按快捷键(Ctrl+Alt+A)")
            Sleep(5000)
            GUICtrlSetData($TS, "需要帮助请加QQ群:17140076")
            FileCreateShortcut("D:\WindowsPE\pesetup.exe", "D:\ProgramData\Microsoft\Windows\Start Menu\一键进入PE(Ctrl+Alt+A)", "D:\WindowsPE\pesetup.exe", "", "", "D:\WindowsPE\pesetup.exe", "^!a")
        EndIf
    EndIf
EndFunc   ;==>_bat

Func _7Pe()
    If FileExists(@ScriptDir & "\WindowsPE\7PE.wim") Then
        ProgressCopy("WindowsPE", "C:\WindowsPE")
        FileCopy("C:\WindowsPE\7PE.wim", "C:\WindowsPE\boot.wim", 1)
        FileSetAttrib("C:\WindowsPE", "+H")
        FileCreateShortcut("C:\WindowsPE\pesetup.exe", "C:\ProgramData\Microsoft\Windows\Start Menu\一键进入PE(Ctrl+Alt+A)", "C:\WindowsPE\pesetup.exe", "", "", "C:\WindowsPE\pesetup.exe", "^!a")
        _bat()
    Else
        MsgBox(262176, "提示!", "没有发现当前目录WindowsPE文件夹里有PE内核文件(7PE.wim),无法安装,确定退出。")
    EndIf
EndFunc   ;==>_7Pe
Func _8Pe()
    If FileExists(@ScriptDir & "\WindowsPE\8PE.wim") Then
        ProgressCopy("WindowsPE", "C:\WindowsPE")
        FileCopy("C:\WindowsPE\8PE.wim", "C:\WindowsPE\boot.wim", 1)
        FileSetAttrib("C:\WindowsPE", "+H")
        FileCreateShortcut("C:\WindowsPE\pesetup.exe", "C:\ProgramData\Microsoft\Windows\Start Menu\一键进入PE(Ctrl+Alt+A)", "C:\WindowsPE\pesetup.exe", "", "", "C:\WindowsPE\pesetup.exe", "^!a")
        _bat()
    Else
        MsgBox(262176, "提示!", "没有发现当前目录WindowsPE文件夹里有PE内核文件(8PE.wim),无法安装,确定退出。")
    EndIf
EndFunc   ;==>_8Pe
Func _10Pe()
    If FileExists(@ScriptDir & "\WindowsPE\boot.wim") Then
        ProgressCopy("WindowsPE", "C:\WindowsPE")
        FileSetAttrib("C:\WindowsPE", "+H")
        _bat()
        FileCreateShortcut("C:\WindowsPE\pesetup.exe", "C:\ProgramData\Microsoft\Windows\Start Menu\一键进入PE(Ctrl+Alt+A)", "C:\WindowsPE\pesetup.exe", "", "", "C:\WindowsPE\pesetup.exe", "^!a")
    Else
        MsgBox(262176, "提示!", "没有发现当前目录WindowsPE文件夹里有PE内核文件(boot.wim),无法安装,确定退出。")
    EndIf
EndFunc   ;==>_10Pe
Func _7PeD()
    If FileExists(@ScriptDir & "\WindowsPE\7PE.wim") Then
        ProgressCopy("WindowsPE", "D:\WindowsPE")
        FileCopy("D:\WindowsPE\7PE.wim", "D:\WindowsPE\boot.wim", 1)
        FileSetAttrib("C:\WindowsPE", "+H")
        FileCreateShortcut("D:\WindowsPE\pesetup.exe", "C:\ProgramData\Microsoft\Windows\Start Menu\一键进入PE(Ctrl+Alt+A)", "D:\WindowsPE\pesetup.exe", "", "", "D:\WindowsPE\pesetup.exe", "^!a")
        _bat()
    Else
        MsgBox(262176, "提示!", "没有发现当前目录WindowsPE文件夹里有PE内核文件(7PE.wim),无法安装,确定退出。")
    EndIf
    Exit
EndFunc   ;==>_7PeD
Func _8PeD()
    If FileExists(@ScriptDir & "\WindowsPE\8PE.wim") Then
        ProgressCopy("WindowsPE", "D:\WindowsPE")
        FileCopy("C:\WindowsPE\8PE.wim", "D:\WindowsPE\boot.wim", 1)
        FileSetAttrib("D:\WindowsPE", "+H")
        FileCreateShortcut("D:\WindowsPE\pesetup.exe", "C:\ProgramData\Microsoft\Windows\Start Menu\一键进入PE(Ctrl+Alt+A)", "D:\WindowsPE\pesetup.exe", "", "", "D:\WindowsPE\pesetup.exe", "^!a")
        _bat()
    Else
        MsgBox(262176, "提示!", "没有发现当前目录WindowsPE文件夹里有PE内核文件(8PE.wim),无法安装,确定退出。")
    EndIf
EndFunc   ;==>_8PeD
Func _10PeD()
    If FileExists(@ScriptDir & "\WindowsPE\boot.wim") Then
        ProgressCopy("WindowsPE", "D:\WindowsPE")
        FileSetAttrib("D:\WindowsPE", "+H")
        _bat()
        FileCreateShortcut("D:\WindowsPE\pesetup.exe", "C:\ProgramData\Microsoft\Windows\Start Menu\一键进入PE(Ctrl+Alt+A)", "D:\WindowsPE\pesetup.exe", "", "", "D:\WindowsPE\pesetup.exe", "^!a")
    Else
        MsgBox(262176, "提示!", "没有发现当前目录WindowsPE文件夹里有PE内核文件(boot.wim),无法安装,确定退出。")
    EndIf
EndFunc   ;==>_10PeD
Func ProgressCopy($current, $destination, $UseMultiColour = 0, $attrib = "-R", $overwrite = 1, $Run1 = 0)
    If $Run1 = 0 Then
        Global $OverallQty, $Overall, $source, $overallpercent, $Pro0Text, $Pro, $ProText, $Pro2, $Pro2Text, $LocalPercent
        DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)
        If Not FileExists($destination) Then DirCreate($destination) ; This is why it was failing, the dir did not exist
        $source = $current
        If StringRight($current, 1) = '\' Then $current = StringTrimRight($current, 1)
        If StringRight($destination, 1) <> '\' Then $destination = $destination & "\"
        $tosearch = $current
        $Overall = DirGetSize($tosearch, 1)
        $OverallQty = $Overall[1]
        $Run1 = 1
    EndIf
    $Size = DirGetSize($current, 3)
    $Qty = $Size[1]
    Local $search = FileFindFirstFile($current & "\*.*")
    While 1
        Dim $file = FileFindNextFile($search)
        If @error Or StringLen($file) < 1 Then ExitLoop
        If Not StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then
            $Qty -= 1
            $LocalPercent = 100 - (($Qty / $Size[1]) * 100)
            $OverallQty -= 1
            $overallpercent = 100 - (($OverallQty / $Overall[1]) * 100)
            GUICtrlSetData($Pro2, $LocalPercent)
            GUICtrlSetData($TS, "正在处理文件,请稍候......")
            If $UseMultiColour Then
                GUICtrlSetColor($Pro, _ChangeColour($overallpercent))
            EndIf
            FileCopy($current & "\" & $file, $destination & StringTrimLeft($current, StringLen($source)) & "\" & $file, $overwrite)
            FileSetAttrib($destination & StringTrimLeft($current, StringLen($source)) & "\" & $file, $attrib)
        EndIf
        If StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then
            DirCreate($destination & StringTrimLeft($current, StringLen($source)) & "\" & $file)
            FileSetAttrib($destination & StringTrimLeft($current, StringLen($source)) & "\" & $file, $attrib)
            ProgressCopy($current & "\" & $file, $destination, $UseMultiColour, $attrib, $overwrite, 1)
        EndIf
    WEnd
    FileClose($search)
    If $overallpercent = 100 Then
        GUICtrlSetData($Pro, 100)
        $Run1 = 0
    EndIf
EndFunc   ;==>ProgressCopy

Func _ChangeColour($start)
    $Redness = Int(255 - ($start / 100 * 512))
    If $Redness < 0 Then $Redness = 0
    $Greeness = Int(($start / 100 * 512) - 257)
    If $Greeness < 0 Then $Greeness = 0
    $Blueness = Int(255 - ($Redness + $Greeness))
    Return ($Redness * 256 * 256) + ($Greeness * 256) + $Blueness
EndFunc   ;==>_ChangeColour
Func _SKIN1()
    FileInstall("D:\au3\Skins\细边框灰.she", @TempDir & "\Rea风格.she", 1)
    FileInstall("D:\au3\Skins\Skin.dll", @TempDir & "\", 1)
    $skins = @TempDir & "\Rea风格.she."
    $Dll = DllOpen(@TempDir & "\Skin.dll")
    DllCall($Dll, "int", "SkinH_AttachEx", "str", $skins, "str", "mhgd")
    DllCall($Dll, "int", "SkinH_SetAero", "int", 1)
    FileDelete(@TempDir & "\Rea风格.she")
EndFunc   ;==>_SKIN1
Func _SKIN()
    FileInstall("D:\au3\Skins\高雅淡绿.she", @TempDir & "\Rea风格.she", 1)
    FileInstall("D:\au3\Skins\Skin.dll", @TempDir & "\", 1)
    $skins = @TempDir & "\Rea风格.she."
    $Dll = DllOpen(@TempDir & "\Skin.dll")
    DllCall($Dll, "int", "SkinH_AttachEx", "str", $skins, "str", "mhgd")
    DllCall($Dll, "int", "SkinH_SetAero", "int", 1)
    FileDelete(@TempDir & "\Rea风格.she")
EndFunc   ;==>_SKIN
Func _IsChecked($idControlID)
    Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
EndFunc   ;==>_IsChecked

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值