代码:
--------------------------------------------------------------------------------
#NoTrayIcon
#Region ;**** 参数创建于 AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=biosclub.ico
#AutoIt3Wrapper_outfile=onekey.exe
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** 参数创建于 AutoIt3Wrapper_GUI ****
#include <GUIConstants.au3>
#include <process.au3>
#include <Constants.au3>
#include <file.au3>
#include <array.au3>
#include <GUIStatusBar.au3>
#include <GuiTab.au3>
Dim $Dll
;判断程序是否重复运行
$g_szVersion = "ZeroTOOLSv1.0"
If WinExists($g_szVersion) Then Exit
AutoItWinSetTitle($g_szVersion)
;建立工具箱目录
$finddir=FileFindFirstFile (StringLeft(@WindowsDir,2)&"\ZeroDOS")
if $finddir=-1 then
DirCreate (StringLeft(@WindowsDir,2)&"\ZeroDOS")
EndIf
FileInstall("D:\au3脚本\onekey v1.0\biosclub.ico",@SystemDir&"\",1)
;FileInstall("D:\au3脚本\onekey v1.0\biosclub.ico",@WindowsDir&"\",1)
;FileInstall("D:\au3脚本\onekey v1.0\Stylish.skf",@SystemDir&"\",1)
;FileInstall("D:\au3脚本\onekey v1.0\XP-style.skf",@SystemDir&"\",1)
;FileInstall("D:\au3脚本\onekey v1.0\logo.jpg",@SystemDir&"\",1)
;FileInstall("D:\au3脚本\onekey v1.0\SkinCrafterDll.dll",@SystemDir&"\",1)
#Region ### START Koda GUI section ### Form=D:\au3脚本\收藏夹程序\Form1.kxf
;获取硬盘分区参数开始
;**************************************************************************
;查看并生
Dim $partfile,$hdinfo,$hdinfolast,$str,$partno,$CountLines,$strlast,$partnolast,$p
;获取硬盘分区参数结束
$var = DriveGetDrive("FIXED")
If Not @error Then
; $i = $var[0]
For $p = 1 To $var[0]
;$varhd = GUICtrlSetData($AcceptList1, StringUpper($var
))
$lasthd = StringUpper($var[0])
$lastdrv = StringUpper($var[$lasthd])
Next
EndIf
$windir=StringLeft(@WindowsDir,2)
$windirs=(Round(DriveSpaceTotal($windir)) - Round(DriveSpaceFree($windir))) & "M"
$windirp=DriveGetFileSystem($windir)
$winsys=@OSVersion
$getlist=StringLeft(@WindowsDir,1)
Select
Case $winsys="WIN_2003"
$winos="Windows 2003"
Case $winsys="WIN_XP"
$winos="Windows XP"
case $winsys="WIN_2000"
$winos="Windows 2000"
case $winsys="WIN_NT4"
$winos="Windows NT4"
EndSelect
#Region ### START Koda GUI section ### Form=D:\au3脚本\onekey v1.0\Form1.kxf
$about = GUICreate(" ZeroOneKey GHOST11 V1.0", 324, 184, -1, -1)
GUISetIcon(@SystemDir &"\biosclub.ico")
_SkinGUI(@SystemDir &"\SkinCrafterDll.dll", @SystemDir &"\XP-style.skf", $about) 皮肤功能实现
$aboutGroup1 = GUICtrlCreateGroup("版本信息:", 8, 2, 307, 78)
$aboutLabel1 = GUICtrlCreateLabel("程序中文名:零点一键备份还原 V1.0版", 16, 18, 250, 17, $WS_GROUP)
$aboutLabel2 = GUICtrlCreateLabel("程序英文名:ZeroOneKey V1.0", 16, 38, 250, 17, $WS_GROUP)
$aboutLabel3 = GUICtrlCreateLabel("程序内核名:GHOST 11.0.1.1533", 16, 58, 250, 17, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$aboutGroup2 = GUICtrlCreateGroup("请选择:", 8, 80, 307, 70)
$aboutLabel4 = GUICtrlCreateLabel("硬盘第一分区为:"&$hdinfofist, 16, 95, 200, 17, $WS_GROUP)
$aboutLabel5 = GUICtrlCreateLabel("系统所在分区为:"&$windir, 160, 95, 140, 17, $WS_GROUP)
$bakup = GUICtrlCreateButton("备份(&B)", 55, 115, 75, 25)
$restore = GUICtrlCreateButton("还原(&R)", 140, 115, 75, 25)
$btcancel = GUICtrlCreateButton("取消(&C)", 225, 115, 75, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$aboutLabel7 = GUICtrlCreateLabel("程序:http://www.biosclub.com QQ:78357343", 16, 160, 270, 17, $WS_GROUP)
;GUICtrlSetState(-1, $GUI_HIDE)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
case $bakup
GUIDelete($about)
bakup()
case $restore
GUIDelete($about)
restore()
case $btcancel
Exit
EndSwitch
WEnd
func bakup()
#Region ### START Koda GUI section ### Form=D:\au3脚本\onekey v1.0\Form1.kxf
$Form1 = GUICreate("ZeroOneKey GHOST11 V1.0", 355, 190, -1, -1,BitOR($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX))
GUISetIcon(@SystemDir &"\biosclub.ico")
_SkinGUI(@SystemDir &"\SkinCrafterDll.dll", @SystemDir &"\Stylish.skf", $Form1) 皮肤功能实现
$Group1 = GUICtrlCreateGroup("系统信息:", 8, 0, 340, 57)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Label1 = GUICtrlCreateLabel("操作系统:"&$winos&" "&@OSServicePack, 16, 16, 300, 17)
$Label2 = GUICtrlCreateLabel("系统分区:"& $windir, 16, 32, 120, 17)
$Label3 = GUICtrlCreateLabel("分区格式:"& $windirp, 120, 32, 120, 17)
$Label4 = GUICtrlCreateLabel("空间占用:"&$windirs, 224, 32, 120, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("功能选择:", 8, 56, 340, 97)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Label5 = GUICtrlCreateLabel("将分区:", 17, 76, 52, 17)
$fromdisk = GUICtrlCreateCombo($hdinfofist&" "&$partnofist, 96, 72, 58, 30,$CBS_DROPDOWNLIST)
$Label6 = GUICtrlCreateLabel("备份到:", 170, 76, 52, 17)
$todisk = GUICtrlCreateCombo($hdinfolast&" "&$partnolast, 250, 72, 58, 30,$CBS_DROPDOWNLIST)
$Label7 = GUICtrlCreateLabel($hdinfofist&"盘已用空间:"&(Round(DriveSpaceTotal($windir)) - Round(DriveSpaceFree($windir))) & "M", 17, 100, 150, 17,$WS_DISABLED)
$Label8 = GUICtrlCreateLabel($hdinfolast&"盘可用空间:"& Round(DriveSpaceFree($hdinfolast)) & "M", 170, 100, 150, 17,$WS_DISABLED)
$Label9 = GUICtrlCreateLabel("备份文件名:", 16, 124, 76, 17)
$ghostname = GUICtrlCreateInput($bfpart&"\GHOST\"&StringLeft($windir,1)&"_"&$winsys, 96, 120, 121, 21,$ES_READONLY)
GUICtrlSetTip(-1, $bfpart&"\GHOST\"&StringLeft($windir,1)&"_"&$winsys&".GHO")
$Label10 = GUICtrlCreateLabel(".GHO", 224, 124, 31, 17)
$ghorar = GUICtrlCreateCombo("", 256, 120, 73, 25,$CBS_DROPDOWNLIST)
GUICtrlSetFont($GhoRAR, 9, 400, 0, "宋体")
GUICtrlSetData($GhoRAR, "不压缩|快速压缩|高压缩|最高压缩","快速压缩")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$btok = GUICtrlCreateButton("确定(&O)", 160, 160, 75, 25, 0)
$cancel = GUICtrlCreateButton("关闭(&C)", 256, 160, 75, 25, 0)
$Label11 = GUICtrlCreateLabel("程序: QQ:78357343", 8, 168, 130, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;
;获硬盘分区代码部份
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
case $fromdisk
$getfrom=GUICtrlRead($fromdisk)
$fromleft=StringLeft($getfrom,2)
$getto=GUICtrlRead($todisk)
$toleft=StringLeft($getto,2)
if $fromleft=$toleft Then
MsgBox(64,"警告!","备份分区与镜像存放分区不能是同一分区!!",5)
GUICtrlSetData($fromdisk,$hdinfofist&" "&$partnofist,$hdinfofist&" "&$partnofist)
Else
if $fromleft = $windir then
GUICtrlSetData ($ghostname,$toleft&"\GHOST\"&StringLeft($fromleft,1)&"_"&$winsys)
GUICtrlSetTip($ghostname, $toleft&"\GHOST\"&StringLeft($fromleft,1)&"_"&$winsys&".GHO")
Else
GUICtrlSetData ($ghostname,$toleft&"\GHOST\"&StringLeft($fromleft,1)&"_DATA")
GUICtrlSetTip($ghostname, $toleft&"\GHOST\"&StringLeft($fromleft,1)&"_DATA.GHO")
EndIf
GUICtrlSetData($Label7, $fromleft & "盘已用空间:" & (Round(DriveSpaceTotal($fromleft)) - Round(DriveSpaceFree($fromleft))) & "M")
EndIf
case $todisk
$getto=GUICtrlRead($todisk)
$toleft=StringLeft($getto,2)
$getfrom=GUICtrlRead($fromdisk)
$fromleft=StringLeft($getfrom,2)
if $fromleft=$toleft Then
MsgBox(64,"警告!","备份分区与镜像存放分区不能是同一分区!!",5)
GUICtrlSetData($todisk,$hdinfolast&" "&$partnolast,$hdinfolast&" "&$partnolast)
Else
if $fromleft = $windir then
GUICtrlSetData ($ghostname,$toleft&"\GHOST\"&StringLeft($fromleft,1)&"_"&$winsys)
GUICtrlSetTip($ghostname, $toleft&"\GHOST\"&StringLeft($fromleft,1)&"_"&$winsys&".GHO")
Else
GUICtrlSetData ($ghostname,$toleft&"\GHOST\"&StringLeft($fromleft,1)&"_DATA")
GUICtrlSetTip($ghostname, $toleft&"\GHOST\"&StringLeft($fromleft,1)&"_DATA.GHO")
EndIf
GUICtrlSetData($Label8, $toleft & "盘已用空间:" & (Round(DriveSpaceTotal($toleft)) - Round(DriveSpaceFree($toleft))) & "M")
EndIf
$getfrom=GUICtrlRead($fromdisk)
$ghostsys=$getfrom
CASE $btok
$getGhoRAR=GUICtrlRead($GhoRAR)
Select
Case $getGhoRAR="不压缩"
$grar=""
Case $getGhoRAR="快速压缩"
$grar="-z1"
case $getGhoRAR="高压缩"
$grar="-z3"
case $getGhoRAR="最高压缩"
$grar="-z9"
EndSelect
$getbakname1=GUICtrlRead($ghostname)
$getfrom=GUICtrlRead($fromdisk)
$srcform=StringRight($getfrom,3)
$getto=GUICtrlRead($todisk)
$dstto=StringRight($getto,3)
$dsttopart=StringLeft($getto,2)
$sumname=StringLen($getbakname1)
$getbakname=StringRight($getbakname1,$sumname-2)
$finddir=FileFindFirstFile ($dsttopart&"\GHOST")
if $finddir=-1 then
DirCreate ($dsttopart&"\GHOST")
EndIf
$ghostbat="ghost.exe -nousb -clone,mode=pdump,src="& $srcform &",dst="& $dstto & $getbakname & ".zero -sure -fro -rb " &$grar ;备份批处理生存
;$ghostrebat="ghost -clone,mode=pload,src=1:"& $dstto & $getbakname&":1,dst=1:"& $srcform &" -sure -no1394 -nousb -rb"
if FileExists(@HomeDrive &"\ZeroDOS\ZeroDOSbk.bat") Then FileDelete(@HomeDrive &"\ZeroDOS\ZeroDOSbk.bat")
if FileExists(@HomeDrive &"\ZeroDOS\ZeroDOSre.bat") Then FileDelete(@HomeDrive &"\ZeroDOS\ZeroDOSre.bat")
if FileExists(@SystemDir & "\diskinfo.dll") Then FileDelete(@SystemDir & "\diskinfo.dll")
if not FileExists(@HomeDrive &"\ZeroDOS\ZeroDOSbk.bat") Then FileWrite(@HomeDrive &"\ZeroDOS\ZeroDOSbk.bat",$ghostbat)
;if not FileExists(@HomeDrive &"\ZeroDOS\ZeroDOSre.bat") Then FileWrite(@HomeDrive &"\ZeroDOS\ZeroDOSre.bat",$ghostrebat)
if FileExists(@HomeDrive &"\grldr") then FileCopy(@HomeDrive &"\grldr",@HomeDrive &"\ZeroDOS\grldr.bak")
if not FileExists(@HomeDrive &"\grldr") Then FileInstall("grldr",@HomeDrive &"\grldr",1)
;if not FileExists(@HomeDrive &"\bcft.gz") Then FileInstall("fonts.gz",@HomeDrive &"\ZeroDOS\fonts.gz",1) ;字库
;if not FileExists(@HomeDrive &"\ZeroDOS\zrdosbj.gz") Then FileInstall("zrdosbj.gz",@HomeDrive &"\ZeroDOS\zrdosbj.gz",1) ;背景图
if not FileExists(@HomeDrive &"\ZeroDOS\Memdisk.gz") Then FileInstall("Memdisk.gz",@HomeDrive &"\ZeroDOS\Memdisk.gz",1)
if not FileExists(@HomeDrive &"\ZeroDOS\Zerodos.img") Then FileInstall("Zerodos.img",@HomeDrive &"\ZeroDOS\Zerodos.img",1);一键备份还原工具
if not FileExists(@HomeDrive &"\ZeroDOS\zrdos.gz") Then FileInstall("zrdos.gz",@HomeDrive &"\ZeroDOS\zrdos.gz",1);一键备份还原菜单
if not FileExists(@HomeDrive &"\ZeroDOS\ghost.exe") Then FileInstall("ghost.exe",@HomeDrive &"\ZeroDOS\ghost.exe",1);一键备份还原
if not FileExists(@HomeDrive &"\ZeroDOS\ghost.bat") Then FileInstall("ghost.bat",@HomeDrive &"\ZeroDOS\ghost.bat",1);一键备份还原
FileSetAttrib("c:\boot.ini", "-SHR")
FileCopy("c:\boot.ini", "c:\zerodos\boot.bak")
IniWrite("c:\boot.ini", "boot loader", "timeout", 1)
IniWrite("c:\boot.ini", "boot loader", "default", "C:\grldr")
IniWrite("c:\boot.ini", "operating systems", "C:\grldr", "ZeroOneKey Ghost 11")
$msg = MsgBox(8192 + 0 + 64 + 4, "是否重启", "要重启计算机立即进行一键恢复吗?")
If $msg = 6 Then
if FileExists(@SystemDir & "\diskinfo.dll") Then FileDelete(@SystemDir & "\diskinfo.dll")
if FileExists(@SystemDir & "\SkinCrafterDll.dll") Then FileDelete(@SystemDir & "\SkinCrafterDll.dll")
if FileExists(@SystemDir & "\logo.jpg") Then FileDelete(@SystemDir & "\logo.jpg")
if FileExists(@SystemDir & "\biosclub.ico") Then FileDelete(@SystemDir & "\biosclub.ico")
Shutdown(2)
Else
if FileExists(@SystemDir & "\diskinfo.dll") Then FileDelete(@SystemDir & "\diskinfo.dll")
if FileExists(@SystemDir & "\SkinCrafterDll.dll") Then FileDelete(@SystemDir & "\SkinCrafterDll.dll")
if FileExists(@SystemDir & "\logo.jpg") Then FileDelete(@SystemDir & "\logo.jpg")
if FileExists(@SystemDir & "\biosclub.ico") Then FileDelete(@SystemDir & "\biosclub.ico")
FileCopy("c:\zerodos\boot.bak","c:\boot.ini",1)
FileSetAttrib("c:\boot.ini","+RSH")
DirRemove("c:\zerodos",1)
FileDelete("c:\grldr")
if FileExists(@HomeDrive &"\ZeroDOS\grldr.bak") then filecopy(@HomeDrive &"\ZeroDOS\grldr.bak",@HomeDrive&"\grldr")
Exit
EndIf
case $cancel
Exit
EndSwitch
WEnd
EndFunc
Func restore()
EndFunc
;以下为皮肤用的
Func _SkinGUI($SkincrafterDll, $SkincrafterSkin, $Handle)
$Dll = DllOpen($SkincrafterDll)
DllCall($Dll, "int:cdecl", "InitLicenKeys", "wstr",0, "wstr", "", "wstr", "", "wstr", "", "wstr", "")
DllCall($Dll, "int:cdecl", "InitDecoration", "int", 1)
DllCall($Dll, "int:cdecl", "LoadSkinFromFile", "wstr", $SkincrafterSkin)
DllCall($Dll, "int:cdecl", "DecorateAs", "int", $Handle, "int", 25)
DllCall($Dll, "int:cdecl", "ApplySkin")
EndFunc ;==_SkinGUI
Func Quit()
GUISetState(@SW_HIDE)
DllCall($dll, "int", "DeInitDecoration")
DllCall($dll, "int", "RemoveSkin")
DllClose($dll)
Exit
EndFunc
请帮忙看看这代码,除了皮肤外还需要哪些,注意是转载的!!
请调试好的回个帖子!!
顺便把东东都传上来!!
[ 本帖最后由 xgdjkk 于 2008-7-24 16:16 编辑 ] |