// C:\FWH..\SAMPLES\UNZIP2.PRG simples teste. kapiabafwh@gmail.com
#include "FiveWin.ch"
#Include "Directry.ch"
#Define CLR_PINK 聽 聽 聽 nRGB( 255, 128, 128 ) //-> Rosa. uiiii. kkkkkk
#Define CLR_NBLUE 聽 聽 聽nRGB( 128, 128, 192 )
#Define CLR_MSPURPLE 聽 nRGB( 0, 聽 120, 215 ) //-> Purpura.
#Define CLR_MSRED 聽 聽 聽nRGB( 232, 聽17, 聽35 )
#Define CLR_MSGRAY 聽 聽 nRGB( 229, 229, 229 )
#Define CLR_LGRAY 聽 聽 聽nRGB( 230, 230, 230 )
FUNCTION Main()
聽 聽 MEMVAR cPRGPATH, cFILEPATH
聽 聽 cPRGPATH := cFILEPATH(GETMODULEFILENAME(GETINSTANCE()))
聽 聽 cPRGPATH := cShortName(cPRGPATH) 聽//-> Modified / Modificado al final
聽 聽 XBACKUP()
聽 聽 lCHDIR(cPRGPATH)
RETURN NIL
FUNCTION XBACKUP()
聽 聽LOCAL oDlg, oFont, cDest, cArqZip, aDir1, vPasta, X, nTotal
聽 聽LOCAL cTipo 聽 聽:= "1"
聽 聽// LOCAL cDestino := LEFT("C:\"+CurDir()+SPACE(100),100)
聽 聽LOCAL cDestino
聽 聽// archivos de Origen:
聽 聽// LOCAL cOrigem 聽:= LEFT("C:\"+CurDir()+"\*.PRG"+SPACE(100),100)
聽 聽LOCAL cOrigem
聽 聽LOCAL cSenha := SPACE(10)
聽 聽LOCAL oBtn, oBtn2, oSaida, aGrad, oBrush1, oBrush2, aArq := {}
聽 聽LOCAL c_ExtArq:="zip" 聽//extensao do arquivo que sera criado
聽 聽LOCAL oCursorBtn := TCursor():New(, 'HAND' )
聽 聽// De onde pegar os arquivos:
聽 聽cOrigem 聽:= Curdrive()+":\fwh1905\samples\*.PRG"
聽 聽cDestino := Curdrive()+":\backup\" 聽// "C:\BACKUP"
聽 聽// ? cDestino 聽// "C:\BACKUP" 聽// donde guardar la copia
聽 聽IF .NOT. lIsdir( cDestino )
聽 聽 聽 LMkdir( cDestino )
聽 聽ENDIF
聽 聽SetBalloon( .T. )
聽 聽aGrad := { { 0.30, CLR_MSGRAY, CLR_MSPURPLE },{ 0.50, CLR_MSPURPLE, CLR_MSGRAY }, .F. }
聽 聽DEFINE BRUSH oBrush1 COLOR nRGB( 250, 213, 174 ) STYLE HORIZONTAL
聽 聽DEFINE BRUSH oBrush2 COLOR nRGB( 192, 192, 192 ) STYLE HORIZONTAL
聽 聽DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 00, -35 BOLD
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽
聽 聽DEFINE DIALOG oDlg TITLE "FIVEWIN:- BACKUP - RESTORE -" SIZE 350, 350 聽 ;
聽 聽 聽 PIXEL TRUEPIXEL RESIZABLE GRADIENT aGrad
聽 聽@ 050, 75 BTNBMP oBtn OF oDlg SIZE 200, 70 NOBORDER ADJUST TRANSPARENT 聽 ;
聽 聽 聽 FILE "..\bitmaps\butt1upD.bmp", "..\bitmaps\butt1do.bmp",nil, 聽 聽 聽 聽 ;
聽 聽 聽 聽 聽 聽"..\bitmaps\butt1upL.bmp" 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽;
聽 聽 聽 FONT oFont COLOR CLR_PINK, CLR_BLACK PROMPT "&BACKUP" CENTER 聽 聽 聽 聽 聽;
聽 聽 聽 ACTION ( cTipo := "BACKUP", oDlg:End() ) 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽;
聽 聽 聽 TOOLTIP "Backup"
聽 聽oBtn:bClrGrad = {| lInvert | If( ! lInvert, ;
聽 聽 聽 { { 0.25, RGB( 245, 245, 235 ), RGB( 250, 250, 245 ) }, ;
聽 聽 聽 { 0.75, RGB( 250, 250, 245 ), RGB( 245, 245, 235 ) } }, ;
聽 聽 聽 { { 0.25, RGB( 250, 250, 245 ), RGB( 245, 245, 235 ) }, ;
聽 聽 聽 { 0.75, RGB( 245, 245, 235 ), RGB( 250, 250, 245 ) } } ) }
聽 聽oBtn:nClrBorder := iif( oBtn:lMOver, RGB( 219, 230, 244 ), RGB( 219, 230, 244 ) )
聽 聽oBtn:oCursor 聽 聽:= oCursorBtn
聽 聽@ 150, 75 BTNBMP oBtn2 OF oDlg SIZE 200, 70 NOBORDER ADJUST TRANSPARENT 聽;
聽 聽 聽 FILE "..\bitmaps\butt1upD.bmp", "..\bitmaps\butt1do.bmp",nil, 聽 聽 聽 聽 ;
聽 聽 聽 聽 聽 聽"..\bitmaps\butt1upL.bmp" 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽;
聽 聽 聽 FONT oFont COLOR CLR_PINK, CLR_BLACK PROMPT "&RESTORE" CENTER 聽 聽 聽 聽 ;
聽 聽 聽 ACTION ( cTipo := "RESTORE", oDlg:End() ) 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ;
聽 聽 聽 TOOLTIP "Restore"
聽 聽oBtn2:bClrGrad = {| lInvert | If( ! lInvert, ;
聽 聽 聽 { { 0.25, RGB( 245, 245, 235 ), RGB( 250, 250, 245 ) }, ;
聽 聽 聽 { 0.75, RGB( 250, 250, 245 ), RGB( 245, 245, 235 ) } }, ;
聽 聽 聽 { { 0.25, RGB( 250, 250, 245 ), RGB( 245, 245, 235 ) }, ;
聽 聽 聽 { 0.75, RGB( 245, 245, 235 ), RGB( 250, 250, 245 ) } } ) }
聽 聽oBtn2:nClrBorder := iif( oBtn2:lMOver, RGB( 219, 230, 244 ), RGB( 219, 230, 244 ) )
聽 聽oBtn2:oCursor 聽 聽:= oCursorBtn
聽 聽@ 250, 75 BTNBMP oSaida OF oDlg SIZE 200, 70 NOBORDER ADJUST TRANSPARENT ;
聽 聽 聽 FILE 聽"..\bitmaps\butt1upD.bmp", "..\bitmaps\butt1do.bmp",nil, 聽 聽 聽 聽;
聽 聽 聽 聽 聽 聽 "..\bitmaps\butt1upL.bmp" 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ;
聽 聽 聽 FONT oFont COLOR CLR_PINK, CLR_BLACK PROMPT "&EXIT" CENTER 聽 聽 聽 聽 聽 聽;
聽 聽 聽 ACTION ( cTipo := "SAIDA", oDlg:End() ) 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ;
聽 聽 聽 TOOLTIP "Exit/Salida"
聽 聽oSaida:bClrGrad = {| lInvert | If( ! lInvert, ;
聽 聽 聽 { { 0.25, RGB( 245, 245, 235 ), RGB( 250, 250, 245 ) }, ;
聽 聽 聽 { 0.75, RGB( 250, 250, 245 ), RGB( 245, 245, 235 ) } }, ;
聽 聽 聽 { { 0.25, RGB( 250, 250, 245 ), RGB( 245, 245, 235 ) }, ;
聽 聽 聽 { 0.75, RGB( 245, 245, 235 ), RGB( 250, 250, 245 ) } } ) }
聽 聽oSaida:nClrBorder := iif( oSaida:lMOver, RGB( 219, 230, 244 ), RGB( 219, 230, 244 ) )
聽 聽oSaida:oCursor 聽 聽:= oCursorBtn
聽 聽oSaida:lCancel := .T.
聽 聽ACTIVATE DIALOG oDlg CENTERED
聽 聽IF cTipo != "SAIDA"
聽 聽 聽 ? "Tipo: ", cTipo, cDestino, cOrigem
聽 聽ENDIF
聽 聽IF cTipo = "RESTORE"
聽 聽 聽 cOrigem := Curdrive()+":\backup\BACKUP.ZIP"
聽 聽ENDIF
聽 聽IF .NOT. FILE( AllTrim( cOrigem ) )
聽 聽 聽 Alert( "Arquivo: " + AllTrim( cOrigem ) + "; Nao encontrado(bakcup.zip)!" )
聽 聽 聽 RETURN NIL
聽 聽ENDIF
聽 聽IF Right( AllTrim( cDestino ), 1 ) != "\"
聽 聽 聽 cDest := AllTrim( cDestino ) + "\NUL"
聽 聽 聽 cArqZip := AllTrim( cDestino ) + "\backup." + c_ExtArq
聽 聽ELSE
聽 聽 聽 cDest := AllTrim( cDestino ) + "NUL"
聽 聽 聽 cArqZip := AllTrim( cDestino ) + "backup." + c_ExtArq
聽 聽ENDIF
聽 聽IF .NOT. FILE( cDest )
聽 聽 聽 Alert( "O Drive: " + AllTrim( cDestino ) + "; Nao encontrado!" )
聽 聽 聽 RETURN NIL
聽 聽ENDIF
聽 聽IF cTipo = "BACKUP" 聽// BACKUP
聽 聽 聽 aArq := {}
聽 聽 聽 IF "*" $ cOrigem
聽 聽 聽 聽 聽aDir1 := Directory( AllTrim( cOrigem ) )
聽 聽 聽 聽 聽vPasta := LEFT( cOrigem, RAt( "\", cOrigem ) )
聽 聽 聽 聽 聽FOR x = 1 TO Len( aDir1 )
聽 聽 聽 聽 聽 聽 AAdd( aArq, vPasta + aDir1[ x, 1 ] )
聽 聽 聽 聽 聽NEXT
聽 聽 聽 ELSE
聽 聽 聽 聽 聽AAdd( aArq, AllTrim( cOrigem ) )
聽 聽 聽 ENDIF
聽 聽 聽 nTotal := Len( aArq )
聽 聽 聽 hb_zipfile( cArqZip, aArq, 9, {| cFile, nPos | eProgresso( cFile, nPos, nTotal ) }, .T., , , .F., .F., )
聽 聽 聽 ? "Backup Listo"
聽 聽ELSE // RESTORE
聽 聽 聽 cDest := AllTrim( cDestino )
聽 聽 聽 IF Right( AllTrim( cDestino ), 1 ) != "\"
聽 聽 聽 聽 聽cDest += "\"
聽 聽 聽 ENDIF
聽 聽 聽 aArq := hb_GetFilesInZip( AllTrim( cOrigem ) )
聽 聽 聽 nTotal := Len( aArq )
聽 聽 聽 hb_UnzipFile( AllTrim( cOrigem ), {| cFile, nPos | eProgresso( cFile, nPos, nTotal ) },,, cDest, aArq )
聽 聽 聽 ? "Restore Listo"
聽 聽ENDIF
RETURN NIL
FUNCTION eProgresso(vtxt,xPerc,wTot)
聽 聽Local nPre:=(xPerc*100)/wTot, nBar:=(nPre*74)/100
聽 聽// Completar aqui depois...
RETURN NIL
/*
聽*聽 SPN.PRG
聽*
聽*聽 cShortName() - FilePath Long to Short (GetShortPathNameA())
聽*
聽*聽 Soporte a Funciones del Api de Windows
聽*
聽*聽 Andrade A. Daniel - 2002
聽*聽 Rosario, Argentina
聽*
聽*聽 Libre Distribuci贸n
聽*/
/*
聽*聽 cShortName()
聽*/
FUNCTION cShortName( cLong )
聽 聽 Local 聽 cShort 聽:= Space(164) + Chr(0)
聽 聽 Local 聽 nBuffer := 164
聽 聽 Local 聽 nLen
聽 聽 nLen 聽 聽:= GetSPName( cLong, @cShort, nBuffer )
聽 聽 cShort 聽:= Left( cShort, nLen )
RETURN( cShort )
// Windows Api
DLL32 STATIC FUNCTION GetSPName( lpszLongPath AS STRING, lpszShortPath AS STRING, lBuffer AS LONG ) ;
聽 聽 聽 AS LONG PASCAL FROM "GetShortPathNameA" LIB "kernel32"
// FIN / END
Regards, saludos.