Título: Crear copia de seguridad Publicado por: jrhomer en 7 Noviembre 2006, 09:21 am Hola foro...
intento hacer una pequeña aplicación para que me haga una copia de seguridad de una archivo en concreto (ese aechivo es un mdb) que uso con otra aplicación. no tendría problemas si hago la copia cuando estoy trabajando con la aplicación principal... pero implicaría que siempre que quiera hacer una copia debería ejecutar esa aplicación. Lo que me gustaria hacer es un procedimiento automático para que caba vez que se inicia el PC se ejecute ese procedimiento y se realice la copia de seguridad. Por ejemplo que todos los días a las 12:00 me haga esa copia. Para hacer esto es para lo que tengo problemas... me podeis echar una mano??? y guiarme para ver por donde van los tiros? un saludo. Título: Re: Crear copia de seguridad Publicado por: Gorky en 7 Noviembre 2006, 13:25 pm Creo que te puedo dar la solucion.
Para que se te ejecute en el inicio vas a escribir en la entrada de registro "HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\run". Esto lo puedes hacer con la API RegSetValueEx. Para que sea a una hora en concreto lo vas a hacer con la API GetSystemTime y comparando el valor que te devuelve con la hora que tu quieras. Creo que con eso tienes el problema solucionado. Si tienes alguna duda al respecto pregunta. Título: Re: Crear copia de seguridad Publicado por: jrhomer en 7 Noviembre 2006, 13:39 pm Muchas gracias Gorky, probaré con la API.
Voy a buscar información sobre esas funciones y lo pruebo. Título: Re: Crear copia de seguridad Publicado por: jrhomer en 7 Noviembre 2006, 13:47 pm Es la primera vez que trabajo con esto del registro..... no comprendo como tengo que usar RegSetValueEx y GetSystemTime...
podrias ponerme un ejemplo de como hacerlo? y donde tengo que hacerlo? ya que si lo hago en mi aplicación... si no la ajecuto no se creará la copia de seguridad.... perdona, pero ando bastante perdido en este tema. Título: Re: Crear copia de seguridad Publicado por: Gorky en 7 Noviembre 2006, 13:54 pm Bajate esto y te informas: http://www.allapi.net/downloads/apiguide/agsetup.exe
Si despues sigues teniendo dudas vuelves a preguntar. PD.: Entre una respuesta tuya y otra hay muy poco tiempo y dudo mucho que te haya dado tiempo a poder investigar. Es lo primero que deberias ponerte a hacer. Título: Re: Crear copia de seguridad Publicado por: CeLaYa en 7 Noviembre 2006, 14:27 pm mira yo tengo algo parecido, solo que uso una base de datos del SQL
'Apis '================================== Public Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long 'PROCESOS Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long 'PAUSA Public Declare Function GetTickCount Lib "Kernel32.dll" () As Long Public Const STILL_ACTIVE = &H103 Public Const PROCESS_QUERY_INFORMATION = &H400 Private Sub cmdRespaldo_Click() 'Determinar el nombre de la base de datos Dim b As Long, strPath As String * 255 Dim Archivo As String On Local Error Resume Next b = GetShortPathName(fbDir.Text, strPath, Len(strPath)) strPath = Left$(strPath, b) If Trim(strPath) = "" Then MsgBox "Directorio no valido", vbCritical + vbOKOnly, App.EXEName Exit Sub End If GetAttr (Trim(strPath) & "Respaldo" & Format(Date, "ddMMyyyy") & ".zip") If Err.Number = 0 Then b = MsgBox("¿El archivo de respaldo ya existe, desea sobreescribirlo?", vbQuestion + vbYesNoCancel, App.EXEName) Select Case b Case 6 ' Si Archivo = Trim(strPath) & "Respaldo" & Format(Date, "ddMMyyyy") Case 7 ' No Archivo = InputBox("Teclee el nombre del archivo de respaldo (sin extensión).", "Crear Respaldo", "") If Trim(Archivo) = "" Then Exit Sub Else Archivo = Trim(strPath) & Archivo End If Case 2 ' Cancelar Exit Sub End Select Else Archivo = Trim(strPath) & "Respaldo" & Format(Date, "ddMMyyyy") End If 'Exit Sub If AbrirBD(Acceso.LecturaEscritura) <> 0 Then Exit Sub 'Crear respaldo de la base de datos On Local Error Resume Next lblProgres.Caption = "Creando copia de seguridad..." ProgressBar1.Value = 1 DoEvents BD.Execute "BACKUP DATABASE [Indicadores] TO DISK = N'" & Archivo & ".bak ' " & _ "WITH NOINIT, NOUNLOAD, NAME = N'Respaldo" & Format(Date, "ddMMyyyy") & "', " & _ "NOSKIP, STATS = 10, DESCRIPTION = N'Respaldo', NOFORMAT" DoEvents If Err Then MsgBox BD.Errors(0).Number & vbCrLf & BD.Errors(0).Description, vbCritical + vbOKOnly, App.EXEName Else ' Coomprimir la base de datos .bak lblProgres.Caption = "Comprimiendo archivo..." ProgressBar1.Value = 2 DoEvents 'Ejecuta el comando MSDOS ExeEspera "c:\archiv~1\winzip\winzip32.exe -a -r " & Archivo & ".zip " & Archivo & ".bak" lblProgres.Caption = "Borrando archivos temporales..." ProgressBar1.Value = 3 DoEvents Kill Archivo & ".bak" lblProgres.Caption = "Proceso terminado" ProgressBar1.Value = 4 DoEvents End If On Local Error GoTo 0 CerrarBD End Sub Private Function ExeEspera(COMANDO As String) Dim hProcess As Long Dim RetVal As Long hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(COMANDO, vbMinimizedNoFocus)) Do GetExitCodeProcess hProcess, RetVal DoEvents Pausa 100 Loop While RetVal = STILL_ACTIVE End Function Título: Re: Crear copia de seguridad Publicado por: jrhomer en 12 Noviembre 2006, 19:29 pm Sigo liado con esto y no consigo sacar nada en claro, podrias ponerme un ejemplo de como hacerlo? y donde tengo que hacerlo? ya que si lo hago en mi aplicación... si no la ajecuto no se creará la copia de seguridad....
ando algo perdido en esto Título: Re: Crear copia de seguridad Publicado por: CeLaYa en 13 Noviembre 2006, 19:04 pm y es muy necesario que lo tengas que programar??. porque no lo haces desde el programador de tareas del Windows?
Título: Re: Crear copia de seguridad Publicado por: jrhomer en 15 Noviembre 2006, 10:35 am y es muy necesario que lo tengas que programar??. porque no lo haces desde el programador de tareas del Windows? está deberá ser la solución, ya que no consigo controlar que me me propuso Gorky.Título: Re: Crear copia de seguridad Publicado por: Gorky en 15 Noviembre 2006, 11:15 am y es muy necesario que lo tengas que programar??. porque no lo haces desde el programador de tareas del Windows? está deberá ser la solución, ya que no consigo controlar que me me propuso Gorky.Venga te lo facilito un poco. Esto lo tienes que colocar en la cabecera, antes de Option Explicit: Código: Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Y esto en el cuerpo: Código: Dim h As Long Con eso haces que se te ejecute en cada inicio. Código: Private Type SYSTEMTIME Y con eso haces que a las doce se te copie en la ruta que le hayas dicho. Ya por co***es tienes que saber hacerlo. De todas formas si no lo consigues pregunta de nuevo. |