找回密码
 加入
搜索
查看: 6623|回复: 9

[AU3基础] 为什么制作出的工具制作不了USB启动盘

  [复制链接]
发表于 2013-4-3 14:50:15 | 显示全部楼层 |阅读模式
#include <Array.au3>
DirCreate(@TempDir & "\Skin")
FileInstall("C:\Documents and Settings\Administrator\桌面\新建文件夹\U盘启动\Skin\Skin.dll" ,@TempDir & "\Skin\Skin.dll" ,1 )
FileInstall("C:\Documents and Settings\Administrator\桌面\新建文件夹\U盘启动\Skin\ABC.SHE" ,@TempDir & "\Skin\ABC.SHE",1 )
FileInstall("C:\Documents and Settings\Administrator\桌面\新建文件夹\U盘启动\Skin\fbinst.exe", "c:\fbinst.exe"  , 1)
#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=usb.ico
#AutoIt3Wrapper_outfile=春花秋月WinPe U盘版.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Comment=春花秋月U盘启动制作工具
#AutoIt3Wrapper_Res_Description=U盘启动制作工具
#AutoIt3Wrapper_Res_Fileversion=2.0.1.3
#AutoIt3Wrapper_Res_LegalCopyright=圣达电脑数码科技提供支持
#AutoIt3Wrapper_Res_SaveSource=y
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#Region AutoIt3Wrapper 预编译参数(常用参数)
;#AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%                ;自定义资源段
;#AutoIt3Wrapper_Run_Tidy=                                                   ;脚本整理
;#AutoIt3Wrapper_Run_Obfuscator=                                                      ;代码迷惑
;#AutoIt3Wrapper_Run_AU3Check=                                                                 ;语法检查
;#AutoIt3Wrapper_Run_Before=                                                                 ;运行前
;#AutoIt3Wrapper_Run_After=                                                                        ;运行后
#EndRegion AutoIt3Wrapper 预编译参数(常用参数)
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Process.au3>
#include <EditConstants.au3>





Global $fba_t_xi = "选择要写入到U盘的FBA文件"
Global $hd_t_xi = "选择USB可移动磁盘"




Global $iHover =-1
Global $SkinDll = DllOpen(@TempDir & "\Skin\Skin.dll")




DllCall($SkinDll, "int", "SkinH_AttachEx", "str", @TempDir & "\Skin\ABC.SHE", "str", "mhgd")
DllCall($SkinDll, "int", "SkinH_SetAero", "int", 1)
#Region ### START Koda GUI section ### Form=

$title = "春花秋月WinPe U盘版"

#Region ### START Koda GUI section ### Form=D:\我的文档\桌面\U盘启动盘制作工具GUI(代码)\4444.kxf
$Form1 = GUICreate($title, 303, 412, 280, 142)
$Group1 = GUICtrlCreateGroup("请选择USB可移动磁盘:", 8, 11, 285, 75)
;$Combo1 = GUICtrlCreateCombo("", 16, 97, 200, 25, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))
$Combo1 = GUICtrlCreateCombo("", 16, 33, 200, 25, BitOR($GUI_SS_DEFAULT_COMBO,$CBS_SIMPLE))

$Button1 = GUICtrlCreateButton("刷 新", 223, 31, 60, 27)
$lab = GUICtrlCreateLabel("程序没检测到有USB磁盘", 16, 58, 270, 25)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlCreateGroup("", -99, -99, 1, 1)


$Group2 = GUICtrlCreateGroup("请选择要制作的模式:", 8, 98, 285, 57)
$Combo2 = GUICtrlCreateCombo("", 16, 119, 200, 25, BitOR($GUI_SS_DEFAULT_COMBO,$CBS_SIMPLE))
GUICtrlSetData(-1, "USB-HDD模式(FAT16)|USB-HDD模式(FAT32){推荐}|USB-ZIP模式(FAT16)|USB-ZIP模式(FAT32)|USB-ZIP模式(FAT16)[复制PBP到MBR]", "USB-HDD模式(FAT32){推荐}")
$Checkbox1 = GUICtrlCreateCheckbox("CHS模式", 223, 119, 60, 20)
GUICtrlCreateGroup("", -99, -99, 1, 1)


$Group_fba = GUICtrlCreateGroup("请选择FBA文件:", 8, 163, 285, 57)
$Button_fba = GUICtrlCreateButton("浏 览", 229, 188, 60, 27)
$Input_FBA = GUICtrlCreateInput("", 24, 187, 193, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)

GUICtrlCreateGroup("", 8, 280, 285, 60)
$Label1 = GUICtrlCreateLabel("", 15, 290, 275, 45)
GUICtrlCreateGroup("", -99, -99, 1, 1)


$Button2 = GUICtrlCreateButton("归还U盘空间", 200, 350, 83, 25)
$Button3 = GUICtrlCreateButton("一键制成USB启动盘", 16, 350, 180, 41)
$Button4 = GUICtrlCreateButton("退    出", 200, 380, 83, 25)

$Group3 = GUICtrlCreateGroup("UD区空间", 8, 224, 285, 65)     ;  BitOR($GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE))
$Combo_ud_zice = GUICtrlCreateCombo("比FBA文件大50M", 24, 248, 115, 25, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE))
GUICtrlSetData(-1, "比FBA文件大100M|比FBA文件大200M|比FBA文件大300M|比FBA文件大500M|自定义UD区空间")
$Input_SICE=GUICtrlCreateInput("286", 165, 248, 30, 21 , $ES_NUMBER)
GUICtrlCreateLabel("为:", 142, 250, 20, 21)
GUICtrlCreateLabel("MB", 200, 250, 153, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)


GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

if FileExists(@ScriptDir & "\CHQY.fba")  Then
        GUICtrlSetData($Input_FBA, @ScriptDir & "\CHQY.fba")
        
        $FBA_SIZE=GUICtrlRead($Input_FBA)
        $FBA_SIZE=FileGetSize($FBA_SIZE)
        $FBA_SIZE=Round ($FBA_SIZE / 1024 /1024  + 50)
        modif_FBA_SIZE($FBA_SIZE)  ;修改UD区空间
        ;MsgBox(0,0, $FBA_SIZE )
        
EndIf


if FileExists(@ScriptDir & "\CHQY.fba")  Then
        GUICtrlSetData($Input_FBA, @ScriptDir & "\CHQY.fba")
        
        $FBA_SIZE=GUICtrlRead($Input_FBA)
        $FBA_SIZE=FileGetSize($FBA_SIZE)
        $FBA_SIZE=Round ($FBA_SIZE / 1024 /1024  + 50)
        modif_FBA_SIZE($FBA_SIZE)  ;修改UD区空间
        ;MsgBox(0,0, $FBA_SIZE )
        
EndIf



USB()
GUISetState(@SW_SHOW)

;WinSetOnTop($title, "", 1)

#EndRegion ### END Koda GUI section ###

AdlibRegister('_HoverEffect', 500)
;AdlibUnRegister('_HoverEffect')




While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE, $Button4
                        Exit_()
                Case $Button1
                        GUICtrlSetState($Button1, $GUI_DISABLE)
                        USB()
                        GUICtrlSetState($Button1, $GUI_ENABLE)
                Case $Button3 ; 一键制成USB启动盘
                        $fba_file = GUICtrlRead($Input_FBA) ; 读取FBA文件
                        If $fba_file = "" Or Not FileExists($fba_file) Then
                                MsgBox(262144 + 64, "错误", "没选择FBA文件")
                        Else
                                If GUICtrlRead($Combo1) <> "" Then
                                        AdlibUnRegister('_HoverEffect')
                                        $HD = StringLeft(GUICtrlRead($Combo1), 5) ; 读取选择的USB磁盘
                                        $MS = GUICtrlRead($Combo2) ; 读取类型
                                        GUICtrlSetState($Button2, $GUI_DISABLE)
                                        GUICtrlSetState($Button3, $GUI_DISABLE)
                                        GUICtrlSetData($Label1, "正在把格式化USB磁盘并把FBA文件写入到UD区" &  @CRLF & "需耗时请耐心等待..." )
                                       
                                        $size=GUICtrlRead($Input_SICE)  & "MB"; 读取UD的空间大小
                                       
                                        ;MsgBox(262144,0,$size )
                                        Select
                                                ;Case FileGetSize(@ScriptDir & '\fbinst.exe') <> 76743
                                                ;MsgBox(262144 + 16, '错误', @ScriptDir & '\fbinst.exe' & "文件不存在或已损坏。")
                                                ;Exit_()
                                                ;Case FileGetSize(@ScriptDir & '\U-Disk-System.fba') <> 111682560
                                                ;MsgBox(262144 + 16, '错误', "U-Disk-System.fba文件不存在或已损坏。")
                                                ;Exit_()
                                                Case $MS == 'USB-HDD模式(FAT16)'
                                                        If GUICtrlRead($Checkbox1) == $GUI_CHECKED Then
                                                                ShellExecuteWait ('c:\fbinst.exe   ', $HD & ' format  --extended   ' & $size & '   --force  --align  --fat16  --primary  8m  --chs  --archive  "' & $fba_file & '"', "c:\", "", @SW_HIDE)
                                                        Else
                                                                ShellExecuteWait ('c:\fbinst.exe   ', $HD & ' format  --extended   ' & $size & '   --force  --align  --fat16  --primary  8m  --archive  "' & $fba_file & '"', "c:\", "" ,@SW_HIDE)
                                                        EndIf
                                                Case $MS == 'USB-HDD模式(FAT32){推荐}'
                                                        If GUICtrlRead($Checkbox1) == $GUI_CHECKED Then
                                                        ;        MsgBox(0,"++chs",'fbinst.exe   '& $HD & ' format  --extended   ' & $size & '   --force  --align  --fat32  --primary  8m  --chs  --archive  "' & $fba_file & '"')
                                                                ShellExecuteWait ('c:\fbinst.exe   ', $HD & ' format  --extended   ' & $size & '   --force  --align  --fat32  --primary  8m  --chs  --archive  "' & $fba_file & '"', @ScriptDir, @SW_HIDE)
                                                        Else
                                                                ;        MsgBox(0,"--chs",'fbinst.exe   '& $HD & ' format  --extended   ' & $size & '   --force  --align  --fat32  --primary  8m    --archive  "' & $fba_file & '"')
                                                                ShellExecuteWait ('c:\fbinst.exe   ', $HD & ' format  --extended   ' & $size & '   --force  --align  --fat32  --primary  8m         --archive  "' & $fba_file & '"', @ScriptDir,"", @SW_HIDE)
                                                        EndIf
                                                Case $MS == 'USB-ZIP模式(FAT16)'
                                                        If GUICtrlRead($Checkbox1) == $GUI_CHECKED Then
                                                                ShellExecuteWait ('c:\fbinst.exe   ', $HD & ' format  --extended   ' & $size & '   --force  --align  --zip  --fat16  --primary  8m  --chs  --archive  "' & $fba_file & '"', "c:\", "" ,@SW_HIDE)
                                                        Else
                                                                ShellExecuteWait ('c:\fbinst.exe   ', $HD & ' format  --extended   ' & $size & '   --force  --align  --zip  --fat16  --primary  8m         --archive  "' & $fba_file & '"', "c:\", "" ,@SW_HIDE)
                                                        EndIf
                                                Case $MS == 'USB-ZIP模式(FAT32)'
                                                        If GUICtrlRead($Checkbox1) == $GUI_CHECKED Then
                                                                ShellExecuteWait ('c:\fbinst.exe   ', $HD & ' format  --extended   ' & $size & '   --force  --align  --zip  --fat32  --primary  8m  --chs  --archive  "' & $fba_file & '"', "c:\", "" ,@SW_HIDE)
                                                        Else
                                                                ShellExecuteWait ('c:\fbinst.exe   ', $HD & ' format  --extended   ' & $size & '   --force  --align  --zip  --fat32  --primary  8m         --archive  "' & $fba_file & '"', "c:\", "" ,@SW_HIDE)
                                                        EndIf
                                                Case $MS == 'USB-ZIP模式(FAT16)[复制PBP到MBR]'
                                                        If GUICtrlRead($Checkbox1) == $GUI_CHECKED Then
                                                                ShellExecuteWait ('c:\fbinst.exe   ', $HD & ' format  --extended   ' & $size & '   --force  --align  --zip  --fat16  --primary  8m  --chs  --archive  "' & $fba_file & '"', "c:\", "" ,@SW_HIDE)
                                                        Else
                                                                ShellExecuteWait ('c:\fbinst.exe   ', $HD & ' format  --extended   ' & $size & '   --force  --align  --zip  --fat16  --primary  8m         --archive  "' & $fba_file & '"', "c:\", "" ,@SW_HIDE)
                                                        EndIf
                                                        ShellExecuteWait ('c:\fbinst.exe   ', $HD & ' sync --copy-bpb  --max-sectors 63', "c:\", "" ,@SW_HIDE);复制PBP到MBR
                                                EndSelect
                                       
                                        GUICtrlSetState($Button2, $GUI_ENABLE)
                                        GUICtrlSetState($Button3, $GUI_ENABLE)
                                       
                                        AdlibRegister('_HoverEffect', 500)
                                        MsgBox(262144 + 4096 + 64, '提示', 'WIN PE启动盘制作完成。请断开USB或可移动磁盘!')
                                Else
                                        MsgBox(262144 + 64, '提示', '请选择USB或可移动磁盘!')
                                EndIf
                        EndIf
                Case $Button2 ; 归还U盘空间
                        If GUICtrlRead($Combo1) <> "" Then
                        ;        MsgBox(0,0,"归还U盘空间"  &  @CRLF & 'fbinst'  &  StringLeft(GUICtrlRead($Combo1), 5) & ' format --raw --force')
                                GUICtrlSetState($Button3, $GUI_DISABLE)
                                RUNWait('c:\fbinst.exe     '  &  StringLeft(GUICtrlRead($Combo1), 5) & ' format --raw --force', "c:\" , @SW_HIDE)
                                GUICtrlSetState($Button3, $GUI_ENABLE)
                                MsgBox(262144+4096 + 64, '提示', '格式化完成,已恢复U盘全部空间。')
                        Else
                                MsgBox(262144 + 4096 + 16, '提示', '请选择USB或可移动磁盘!')
                        EndIf
                Case $Button_fba
                        
                        $fba_ff = FileOpenDialog("选择要写入到U盘的FBA文件", @ScriptDir, "FBA文件(*.fba)|所有文件(*.*)")
                        If $fba_ff = "" Then
                                MsgBox(262144 + 64, "错误", "没选择FBA文件")
                        Else
                                GUICtrlSetData($Input_FBA, $fba_ff)
                                $fba_t_xi = "选择的FBA 文件:" & @CRLF & "  " & $fba_ff
                                
                         $FBA_SIZE=Round(FileGetSize(GUICtrlRead($Input_FBA)) / 1024 /1024 )
                         $read_ud_zic=GUICtrlRead($Combo_ud_zice)
                          Select
                               Case $read_ud_zic = "比FBA文件大50M"
                                      $FBA_SIZE = $FBA_SIZE + 50
                                          
                               Case $read_ud_zic = "比FBA文件大100M"
                                      $FBA_SIZE = $FBA_SIZE + 100
                                          
                               Case $read_ud_zic = "比FBA文件大200M"
                                      $FBA_SIZE = $FBA_SIZE + 200
                                          
                               Case $read_ud_zic = "比FBA文件大300M"
                                      $FBA_SIZE = $FBA_SIZE + 300
                                          
                               Case $read_ud_zic = "比FBA文件大500M"
                                      $FBA_SIZE = $FBA_SIZE + 500
                                  Case $read_ud_zic = "自定义UD区空间"
                                        ;  MsgBox(0,0,"自定义UD区空间")
                                          $FBA_SIZE = $FBA_SIZE + 8
                          EndSelect
                        
                          modif_FBA_SIZE($FBA_SIZE)  ;修改UD区空间
                          
                        EndIf
                Case $Combo1   ; 选择USB碰磁盘
                        $tt=GUICtrlRead($Combo1)
                        GUICtrlSetData($lab,$tt)

        Case $Combo_ud_zice ; 设置UD区大小
                         $FBA_SIZE=Round(FileGetSize(GUICtrlRead($Input_FBA)) / 1024 /1024 )
                         $read_ud_zic=GUICtrlRead($Combo_ud_zice)
                          Select
                               Case $read_ud_zic = "比FBA文件大50M"
                                      $FBA_SIZE = $FBA_SIZE + 50
                                          
                               Case $read_ud_zic = "比FBA文件大100M"
                                      $FBA_SIZE = $FBA_SIZE + 100
                                          
                               Case $read_ud_zic = "比FBA文件大200M"
                                      $FBA_SIZE = $FBA_SIZE + 200
                                          
                               Case $read_ud_zic = "比FBA文件大300M"
                                      $FBA_SIZE = $FBA_SIZE + 300
                                          
                               Case $read_ud_zic = "比FBA文件大500M"
                                      $FBA_SIZE = $FBA_SIZE + 500
                          EndSelect
                        
                          modif_FBA_SIZE($FBA_SIZE)  ;修改UD区空间

        EndSwitch
WEnd

Func USB()
        Local $dr = DriveGetDrive("REMOVABLE")
                ;_ArrayDisplay($dr,'Debug~~~')
                If  Not @error Or $dr <> "" Then
                        GUICtrlSetData($Combo1 ,StringUpper($dr[1]) & "\");清空写入模式
                        For $i = 2 To $dr[0]
                                GUICtrlSetData($Combo1 ,StringUpper($dr[$i]) & "\");不清空写入模式
                        Next
                Else
                        GUICtrlSetData($Combo1 ,"无可移动驱动器" )
                        GUICtrlSetData($lab, "程序检测到没有USB设备或可移动磁盘")
                EndIf
EndFunc   ;==>USB


Func modif_FBA_SIZE($a)  ; 修改UD空间
          GUICtrlSetData($Input_SICE , $a)
         
EndFunc   ; 修改UD空间  


Func _HoverEffect()
        $aInfo = GUIGetCursorInfo($Form1)
        Switch $aInfo[4]
                Case $Button_fba
                        GUICtrlSetData($Label1, "选择要写入到U盘的FBA文件")
                Case $Input_FBA
                        $tt = GUICtrlRead($Input_FBA)
                        
                        If Not $tt = "" Then
                                GUICtrlSetData($Label1, $tt)
                        Else
                                GUICtrlSetData($Label1, $fba_t_xi)
                        EndIf
                        
                Case $Combo1
                        $tt = GUICtrlRead($Combo1)
                        If Not $tt = "" Then
                                GUICtrlSetData($Label1, $tt)
                        Else
                                GUICtrlSetData($Label1, $hd_t_xi)
                        EndIf
                Case $Checkbox1
                        GUICtrlSetData($Label1, "强制使用CHS模式。这可以用于某些不能自动检测模式的BIOS")
                Case $Button1
                        GUICtrlSetData($Label1, "重新获取磁盘信息")
                Case $Button3
                        GUICtrlSetData($Label1, "选择好USB可移动磁盘和制作模式后可以进行一键制成USB启动盘(不保证100%成功),注意:制作前请先备份U盘原有数据(数据无价,请慎用!)")
                Case $Button2
                        GUICtrlSetData($Label1, "回收隐藏分区空间,格式化为普通的单分区模式,恢复为没有使用fbinst前的模样")
                Case $Button4
                        GUICtrlSetData($Label1, "退出软件")
                Case Else
                        GUICtrlSetData($Label1, "欢迎使用春花秋月WinPe U盘版" &  @CRLF & "使用前请先备份您U盘的重要数据")
        EndSwitch
EndFunc   ;==>_HoverEffect

Func Exit_()
        ;Exit
        AdlibUnRegister('_HoverEffect')
        DllClose($SkinDll)
        GUIDelete($Form1)
        Exit
EndFunc   ;==>Exit
发表于 2013-4-3 21:27:25 | 显示全部楼层
是什么问题?
 楼主| 发表于 2013-4-7 11:11:04 | 显示全部楼层
回复 2# userdel
制作不了FBA文件到U盘里去啊?
 楼主| 发表于 2013-4-12 10:20:46 | 显示全部楼层
谁能帮忙解决下啊?就这么沉了啊?
发表于 2013-4-12 14:23:31 | 显示全部楼层
回复 4# gzxwh2010

Func USB()
        Local $dr = DriveGetDrive("REMOVABLE")
                ;_ArrayDisplay($dr,'Debug~~~')
                If  Not @error Or $dr <> "" Then
                        GUICtrlSetData($Combo1 ,StringUpper($dr[1]) & "\");清空写入模式
                        For $i = 2 To $dr[0]
                                GUICtrlSetData($Combo1 ,StringUpper($dr[$i]) & "\");不清空写入模式
                        Next
                Else
                        GUICtrlSetData($Combo1 ,"无可移动驱动器" )
                        GUICtrlSetData($lab, "程序检测到没有USB设备或可移动磁盘")
                EndIf
EndFunc   ;==>USB
代码??????????
发表于 2013-4-12 14:26:54 | 显示全部楼层
磁盘盘符参数错误。连fbinst的参数都搞不明白,还想拿别人的用,学好基础最重要。
 楼主| 发表于 2013-4-12 15:57:33 | 显示全部楼层
回复 5# chzj589
请问该怎样修改啊?我还是个菜鸟,主要是做了个FBA文件,想修改个工具来制作而已。所以就在论坛里找了这个代码!
 楼主| 发表于 2013-4-12 15:57:48 | 显示全部楼层
回复 6# haijie1223
请问这里该怎样修改啊?我还是个菜鸟,主要是做了个FBA文件,想修改个工具来制作而已。所以就在论坛里找了这个代码!
发表于 2013-4-12 16:34:10 | 显示全部楼层
回复 8# gzxwh2010


    最好的工具就是fbinsttool,百度一下。既然还是菜鸟,就先好好学就基础。这么好高骛远干吗?
发表于 2013-4-12 23:24:10 | 显示全部楼层
回复 7# gzxwh2010
要现成的,U盘启动安装器论坛搜一下.......
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-26 05:22 , Processed in 0.088371 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表