elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Comprimir (solucionado 50%, falta el tema el embebido)
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Comprimir (solucionado 50%, falta el tema el embebido)  (Leído 3,121 veces)
magarcan

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Comprimir (solucionado 50%, falta el tema el embebido)
« en: 27 Junio 2007, 16:47 pm »

Hola! Mi programa tiene que comprimir directorios (con subdirectorios dentro y archivos...) y descomprimir la misma estructura.En un principio había pensado la función "shell" y llamar a makecab (un programa de la línea de comandos de windows que conprime en formato cab), pero luego me di cuenta de que sólo es capaz de comprimir archivos. He intentado con distintos compresores de línea de comandos pero ninguno soporta los directorios.

¿Conocéis algún otro compresor o algún módulo de visual que haga eso?He mirado algunos dll y algunos módulos, pero sólo comprimen archivos, no directorios.
Gracias!!


« Última modificación: 28 Junio 2007, 00:44 am por magarcan » En línea

Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: Comprimir
« Respuesta #1 en: 27 Junio 2007, 21:13 pm »

si esta instalado el winzip o el winrar en la máquina que vas a comprimir podrías enviarle un lote de parametros con shell para comprimir los archivos, ambos aceptan comandos


En línea

magarcan

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: Comprimir
« Respuesta #2 en: 28 Junio 2007, 00:41 am »

Quería que mi programa lo llevase todo "encima" al final me he decantado por incluir el exe del 7z, que es libre y funciona de perlas. Además todo el tema de los directorios y eso funciona perfecto.

Ahora lo que me queda es embeber el exe dentro de mi ejecutable, ¿alguien sabe como se hace?
En línea

~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Re: Comprimir (solucionado 50%, falta el tema el embebido)
« Respuesta #3 en: 28 Junio 2007, 13:33 pm »

Para meter el exe dentro de tu ejecutable puedes usar un joiner, crearte un mini-joiner para ti mismo o añadirlo como recurso ;)
En línea

Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: Comprimir
« Respuesta #4 en: 28 Junio 2007, 14:53 pm »

Ahora lo que me queda es embeber el exe dentro de mi ejecutable, ¿alguien sabe como se hace?

Utiliza la herramienta del VB para añadir recursos a tu proyecto, añadeselo y luego, cuando se ejecute, lo extraes. Hay un texto por este foro que explica eso.

Un Saludo.  ;)

En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: Comprimir (solucionado 50%, falta el tema el embebido)
« Respuesta #5 en: 29 Junio 2007, 23:36 pm »

hola este es un ejemplo para poder comprimir y descomprimir utilizando lineas de comandos de las aplicaciones WinRar y Winzip osea que es nesesario que en la pc que se ejecute cuente con porlomenos una  de estas aplicaciones, el ejmplo esta echo a mis nesisades pero ustedes lo pueden modifacar para las tullas
 
solo voy aponer dos comandos que son para comprimir y descomprimir sin opciones , pero en la web o en la misma ayuda de ambas aplicaciones pueden encontrar mas informacion
 
una explicacion en breve
lo primero es obtener las rutas de ambas aplicaciones( WinRar y Winzip )
atraves del registro
 
luego las lineas de comandos son
 
para comprimir
Código:
WinRAR a C:\ZipNuevo.zip C:\Foto.Bmp
WinZIP -a C:\ZipNuevo.zip C:\Foto.Bmp

y para descomprimir
Código:
WinRAR e C:\ZipNuevo.zip C:\
WinZIP -e C:\ZipNuevo.zip C:\

bien en el ejemplo muestra con el directorio en C:\ pero si ponemos una ruta mas extensa donde aparecen espacios es nesesario llevar el path a shortPath
 
el ejemplo (dos commandbutton y cambiar las rutas del los archivos si es nesesario)
Código:
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal lBuffer As Long) As Long
Dim WinRar As String, WinZip As String
Public Function GetShortPath(strFileName As String) As String
    Dim Ret As Long, strPath As String
    strPath = String$(165, 0)
    Ret = GetShortPathName(strFileName, strPath, 164)
    GetShortPath = Left(strPath, Ret)
End Function
Private Sub Command1_Click()
Dim FileZipName As String, PathToCompress As String, DestPath As String, FullPathZip As String
'Ruta existente en la que se comprimira el archivo
DestPath = "C:\"
'nombre que le asignaremos al zip
FileZipName = "ArchivoComprimido.zip"

'es nesesario utilizar el nombre corto para que funcione
FullPathZip = GetShortPath(DestPath) & "\" & FileZipName

'Archivo o carpeta exitente que se quiere comprimir
PathToCompress = "C:\Archivos de programa\Windows NT\Pinball\SOUND1.WAV"
'nombre corto
PathToCompress = GetShortPath(PathToCompress)
 
If WinRar <> "" Then
    Shell WinRar & " a " & FullPathZip & " " & PathToCompress ', vbHide
Else
    Shell WinZip & " -a " & FullPathZip & " " & PathToCompress ', vbHide
End If
End Sub
 
Private Sub Command2_Click()
Dim FullPathZip As String, FolderToDescompress As String
'Ruta existente del archivo comprimirdo
FullPathZip = "C:\ArchivoComprimido.zip"
'carpeta existente que se va a descomprimir el zip
FolderToDescompress = "C:\"
'Combercion a nombre corto
FullPathZip = GetShortPath(FullPathZip)
FolderToDescompress = GetShortPath(FolderToDescompress)
If WinRar <> "" Then
    Shell WinRar & " e " & FullPathZip & " " & FolderToDescompress ', vbHide
Else
    Shell WinZip & " -e " & FullPathZip & " " & FolderToDescompress ', vbHide
End If
End Sub
Private Sub Form_Load()
On Error Resume Next
Dim MiObjeto As Object, Ret As String
Set MiObjeto = CreateObject("Wscript.Shell")
Ret = MiObjeto.RegRead("HKEY_CLASSES_ROOT\WinRAR\shell\open\command\")
WinRar = Left(Ret, InStrRev(Ret, " "))

Ret = MiObjeto.RegRead("HKEY_CLASSES_ROOT\WinZip\shell\open\command\")
WinZip = Left(Ret, InStrRev(Ret, " "))
Set MiObjeto = Nothing
Command1.Caption = "Comprimir"
Command2.Caption = "Descomprimir"
If WinRar & WinZip = "" Then
    MsgBox "No se encuentra instalado ni WinZip ni WinRar :("
    End
End If
End Sub
En línea

magarcan

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: Comprimir (solucionado 50%, falta el tema el embebido)
« Respuesta #6 en: 30 Junio 2007, 00:17 am »

Muchas gracias!!! Pero como ya dige el tema de comprimir ya lo tengo solucionado utilizando el 7z(sólo me falta embeberlo en el ejecutable y extraerlo cuando lo vaya a usar), bueno, me queda una duda:
Al ejecutar por ejemplo ésta línea
Código:
Shell WinRar & " a " & FullPathZip & " " & PathToCompress ', vbHide
¿Cómo le indico a la función shell dónde se encuentra el ejecutable del winrar?

En línea

LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: Comprimir (solucionado 50%, falta el tema el embebido)
« Respuesta #7 en: 30 Junio 2007, 01:37 am »

hola el Shell WinRar ,la palabra WinRar es una variable la cual la cargo la ruta del  winrar.exe leyendola del registro de windows, y esta me devuelve en donde esta instalado el winrar.exe

MiObjeto.RegRead("HKEY_CLASSES_ROOT\WinRAR\shell\open\command\")

Saludos
En línea

magarcan

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: Comprimir (solucionado 50%, falta el tema el embebido)
« Respuesta #8 en: 30 Junio 2007, 10:52 am »

PERFECTo, entonces si por ejemplo tengo el winrar de línea de comandos (te viene en el directorio del winrar normal) copiado en mi carpeta C:\Compresores\ y pongo ésto ¿funcionaría, no?
Código:
Shell C:\Compresores\WinRar.exe & " a " & FullPathZip & " " & PathToCompress ', vbHide
GRACIAS!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLUCIONADO] como poner [SOLUCIONADO] a un tema
Sugerencias y dudas sobre el Foro
jcrack 5 4,357 Último mensaje 25 Febrero 2011, 21:55 pm
por jcrack
Propongo que se habilite una forma de dar un tema por solucionado « 1 2 »
Sugerencias y dudas sobre el Foro
fzp 12 30,708 Último mensaje 27 Octubre 2021, 18:13 pm
por Machacador
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines