La denominé Private File, y sirve para esconder solo archivos comprimidos dentro de una imagen. alcambiar de extensiones se visualiza el archivo que se encuentra dentro de la imagen y si se cambia la extensión por el de la imagen vuelve a visualizar la imagen.
CAPTURA DE INTERFAZ
Recomiedo ver el video de explicación.
http://www.youtube.com/watch?v=Jio93Nu5NjA
Si a alguien le sirve de algo dejo el código adjunto con los recursos utilizados, si tienen sugerencias agradecería su apoyo.
CODIGO
Código: Seleccionar todo
#NoTrayIcon
#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=iconoPrivateFile.ico
#AutoIt3Wrapper_Outfile=PrivateFile.exe
#AutoIt3Wrapper_Res_Comment=Software [email protected]
#AutoIt3Wrapper_Res_Description= Oculta archivos dentro de una imagen
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Yasmany Curimilma
#AutoIt3Wrapper_Res_Language=1034
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#include <WinAPI.au3>
Opt("GUICloseOnESC", 0)
Opt("GUIOnEventMode", 1)
_Singleton("PrivateFyas1991")
DirCreate(@AppDataDir & "\PrivateFileYasmany")
FileInstall(".\imagenCabeceraPrivateFile-Compresed.jpg", @AppDataDir & "\PrivateFileYasmany\", 1)
Global $guiPrincipal, $imgPresentacion, $editDescripcion, $inpFile, $inpImage, $btnFile, $btnImage, $btnAplicar, $inpNuevoNombre
Global $barraProgreso, $lblEstado, $lblmostrarExtensiones, $lblAyudaRapida
$guiPrincipal = GUICreate("Private File", 563, 287, -1, -1)
GUISetIcon("iconoPrivateFile.ico")
GUISetBkColor(0xFFFFFF)
$lblmostrarExtensiones = GUICtrlCreateLabel("", 5, 5, 110, 17)
GUICtrlSetCursor($lblmostrarExtensiones, 0)
GUICtrlSetColor($lblmostrarExtensiones, 0x1A4ED7)
GUICtrlCreateLabel("|", 124, 5, 2, 17)
GUICtrlSetColor(-1, 0x1A4ED7)
$lblAyudaRapida = GUICtrlCreateLabel("Ayuda Rápida", 135, 5, 110, 17)
GUICtrlSetCursor($lblAyudaRapida, 0)
GUICtrlSetColor($lblAyudaRapida, 0x1A4ED7)
$imgPresentacion = GUICtrlCreatePic(@AppDataDir & "\PrivateFileYasmany\imagenCabeceraPrivateFile-Compresed.jpg", 30, 25, 159, 147)
GUICtrlCreateGroup("Para que sirve?", 224, 8, 329, 171)
$editDescripcion = GUICtrlCreateEdit("", 232, 24, 313, 150, $WS_VSCROLL + $ES_WANTRETURN + $ES_READONLY + $ES_AUTOVSCROLL, 0) ;BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$WS_VSCROLL), 0)
GUICtrlSetBkColor($editDescripcion, 0xFFFFFF)
GUICtrlSetColor($editDescripcion, 0x3d3d3d)
GUICtrlSetData(-1, @CRLF & 'Private File desarrollado por Yasmany Curimilma, cual su nombre en español se refiere a ' & _
'Archivo Privado sirve para proteger nuestros archivos sean estos, fotos, documentos, videos y más, ' & _
'que deseemos que no estén a simple vista de todos.' & @CRLF & 'Private File copia el archivo a proteger dentro de la ' & _
'imagen que seleccionemos.' & @CRLF & @CRLF & _
'¿CÒMO FUNCIONA?' & @CRLF & _
'Antes de todo debe tener visible las extensiones de los archivos del sistema ya que será mas fácil que Ud. interactue con el ' & _
'presente software y sus archivos.' & @CRLF & _
'Private File copia el archivo comprimido elegido dentro de la imagen seleccionada, creando una copia de la imagen con el nombre ' & _
'que haya ubicado, permitiendole visualizar la imagen, PERO si cambia la extensión de la imagen por la extension del archivo comprimido ' & _
'y lo ejecuta, se abrirá el archivo comprimido que ud. copió dentro de la imagen.' & @CRLF & @CRLF & _
'¿QUE SON LAS EXTENSIONES DE ARCHIVOS?' & @CRLF & _
'Generalmente son los tres ultimos caracteres del nombre de un archivo por ejemplo.: ".docx" ".txt" ".rar" ".jpg" ".zip" entre otros. ' & @CRLF & @CRLF & _
'¿COMO VISUALIZAR LAS EXTENSIONES?' & @CRLF & _
'Si aun no tiene visualizado las extensiones, diríjase al texto color azul ubicado en la parte superior izquierda de este programa y haga ' & _
'un clic izquierdo sobre el, luego de clic derecho sobre la carpeta o escritorio y seleccione actualizar.' & @CRLF & _
'Al Mostrar u Ocultar las extenciones, el texto color azul cambiará su estado.' & @CRLF & @CRLF & _
'¿COMO UTILIZAR PRIVATE FILE.?' & @CRLF & _
'Si Ud. posee fotos, imagenes, documentos y desea que otras personas no los vean, comprimalos en zip o rar y siga los siguientes pasos' & @CRLF & _
'1.- Seleccione el archivo comprimido [Clic botón Archivo]' & @CRLF & _
'2.- Seleccione una imagen [Clic botón Imagen]' & @CRLF & _
'3.- Escriba un nuevo nombre.' & @CRLF & _
'4.- Clic en el botón Aplicar' & @CRLF & @CRLF & _
'ADVERTENCIA.' & @CRLF & _
'*- NO COPIE mas de un archivo comprimido dentro de la imagen' & @CRLF & _
'*- Algunas imagenes no suelen permitir ejecutar los archivos copiados dentro de ellas' & @CRLF & _
'*- Aseguresé que la copia fue correcta, cambiando las extensiones de forma manual y ejecutando los archivos' & @CRLF & _
'*- NO vuelva a reutilizar la imagen en la que se encuentra copiado el archivo, me refiero a la nueva imagen creada.' & @CRLF & _
'*- Evite copiar archivos de tamaño exagerado (por lo menos 150mb)' & @CRLF & @CRLF & _
'SUGERENCIAS.' & @CRLF & _
'*- Identifique la imagen final con un nombre que pueda recordar.')
GUICtrlCreateGroup("", -99, -99, 1, 1)
$inpFile = GUICtrlCreateInput("", 8, 190, 417, 21, $ES_READONLY)
$btnFile = GUICtrlCreateButton("Archivo", 428, 188, 50, 25)
$inpImage = GUICtrlCreateInput("", 8, 215, 417, 21, $ES_READONLY)
$btnImage = GUICtrlCreateButton("Imagen", 428, 214, 50, 25)
$btnAplicar = GUICtrlCreateButton("Aplicar", 478, 188, 75, 49)
$inpNuevoNombre = GUICtrlCreateInput("", 8, 250, 117, 25, $SS_CENTERIMAGE)
GUICtrlCreateLabel('Escriba un nuevo nombre para el archivo. " & "No está permitido los siguientes caracteres: : / \ . " ? | * < > ', 130, 250, 328, 30)
GUICtrlSetState(-1, $GUI_DISABLE)
$lblEstado = GUICtrlCreateLabel("Estado...", 478, 248, 75, 15)
$barraProgreso = GUICtrlCreateProgress(478, 265, 75, 15)
_setTipsControles()
_cargarEventos()
_lecturaRegistroDeExtension()
GUISetState(@SW_SHOW, $guiPrincipal)
GUICtrlSetState($btnFile, $GUI_FOCUS)
While 1
Sleep(100)
WEnd
Func _cargarEventos()
GUICtrlSetOnEvent($lblmostrarExtensiones, "_mostrarExtencionesDeArchivos")
GUISetOnEvent($GUI_EVENT_CLOSE, "_cerrarInterfaz")
GUICtrlSetOnEvent($btnFile, "_seleccionArchivo")
GUICtrlSetOnEvent($btnImage, "_seleccionImagen")
GUICtrlSetOnEvent($btnAplicar, "_aplicar")
GUICtrlSetOnEvent($lblAyudaRapida, "_ayudaRapida")
EndFunc ;==>_cargarEventos
Func _mostrarExtencionesDeArchivos()
If GUICtrlRead($lblmostrarExtensiones) = "Mostrar extensiones" Then RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "HideFileExt", "REG_DWORD", "0")
If GUICtrlRead($lblmostrarExtensiones) = "No mostrar extensiones" Then RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "HideFileExt", "REG_DWORD", "1")
ControlSend('Program Manager', '', '', '{F5}')
EnvUpdate()
_lecturaRegistroDeExtension()
EndFunc ;==>_mostrarExtencionesDeArchivos
Func _lecturaRegistroDeExtension()
Local $value = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "HideFileExt")
If $value = "1" Then GUICtrlSetData($lblmostrarExtensiones, "Mostrar extensiones")
If $value <> "1" Then GUICtrlSetData($lblmostrarExtensiones, "No mostrar extensiones")
EndFunc ;==>_lecturaRegistroDeExtension
Func _seleccionArchivo()
Local $filtro = "Comprimido (*.rar;*.zip)"
GUICtrlSetData($inpFile, FileOpenDialog("Seleccione el archivo a proteger", @DesktopDir & "", $filtro, 1, "", $guiPrincipal))
If GUICtrlRead($inpFile) <> "" Then GUICtrlSetState($btnImage, $GUI_FOCUS)
EndFunc ;==>_seleccionArchivo
Func _seleccionImagen()
GUICtrlSetData($inpImage, FileOpenDialog("Seleccione la imagen", @DesktopDir & "", "Imagen (*.jpg;*.jpeg;*.bmp;*.png)", 1, "", $guiPrincipal))
If GUICtrlRead($inpImage) <> "" Then GUICtrlSetState($inpNuevoNombre, $GUI_FOCUS)
EndFunc ;==>_seleccionImagen
Func _aplicar()
Local $File = GUICtrlRead($inpFile), $Imagen = GUICtrlRead($inpImage), $nuevoNombre = GUICtrlRead($inpNuevoNombre)
If _comprobacioControles($btnFile, $File, "Archivo") Then
If _comprobacioControles($btnImage, $Imagen, "Imagen") Then
If Not StringIsSpace($nuevoNombre) Then
If _busquedaDeCaracteresNoPermitidos($nuevoNombre, "el recuadro para nuevo nombre de archivo protegido.") Then
Local $direccionCopia = StringTrimRight($File, StringInStr(StringReverse($File), "\")) & "\"
Local $extencion = StringRight($Imagen, StringInStr(StringReverse($Imagen), "."))
If FileExists($direccionCopia & $nuevoNombre & $extencion) = 1 Then
MsgBox(48, "Private File", "Escriba otro nombre para el archivo protegido", -1, $guiPrincipal)
GUICtrlSetState($inpNuevoNombre, $GUI_FOCUS)
Else
_estadoControles($GUI_DISABLE)
GUICtrlSetData($lblEstado, "Iniciando...")
For $i = 0 To 50
GUICtrlSetData($barraProgreso, $i)
Sleep(15)
Next
GUICtrlSetData($lblEstado, "Copiando...")
Run(@ComSpec & " /c " & 'COPY /B ' & '"' & $Imagen & '"' & ' + ' & '"' & $File & '"' & ' "' & $direccionCopia & $nuevoNombre & $extencion & '"', "", @SW_HIDE)
GUICtrlSetData($barraProgreso, 100)
GUICtrlSetData($lblEstado, "Finalizado")
Sleep(1500)
GUICtrlSetData($inpFile, "")
GUICtrlSetData($inpImage, "")
GUICtrlSetData($inpNuevoNombre, "")
ShellExecute($direccionCopia, "", "", "OPEN")
GUICtrlSetData($barraProgreso, 0)
GUICtrlSetData($lblEstado, "Estado...")
_estadoControles($GUI_ENABLE)
EndIf
EndIf
Else
MsgBox(48, "Private File", "Escriba un nombre para el archivo protegido.", -1, $guiPrincipal)
GUICtrlSetState($inpNuevoNombre, $GUI_FOCUS)
EndIf
EndIf
EndIf
EndFunc ;==>_aplicar
Func _estadoControles($estado)
GUICtrlSetState($btnAplicar, $estado)
GUICtrlSetState($btnFile, $estado)
GUICtrlSetState($btnImage, $estado)
GUICtrlSetState($inpNuevoNombre, $estado)
EndFunc ;==>_estadoControles
Func _busquedaDeCaracteresNoPermitidos($cadena, $texto)
If StringInStr($cadena, ":") Or StringInStr($cadena, "/") Or StringInStr($cadena, "\") Or StringInStr($cadena, ".") Or StringInStr($cadena, '"') _
Or StringInStr($cadena, " ?") Or StringInStr($cadena, "|") Or StringInStr($cadena, "*") Or StringInStr($cadena, "<") Or StringInStr($cadena, ">") Then
MsgBox(48, "Private File", "Caracteres no permitidos en " & $texto, -1, $guiPrincipal)
Else
Return True
EndIf
EndFunc ;==>_busquedaDeCaracteresNoPermitidos
Func _comprobacioControles($FocoControl, $lecturaControl, $texto)
If Not StringIsSpace($lecturaControl) Then; si esta lleno
If FileExists($lecturaControl) = 1 Then Return True
EndIf
MsgBox(48, "Private File", "Dirección incorrecta de " & $texto, -1, $guiPrincipal)
GUICtrlSetState($FocoControl, $GUI_FOCUS)
EndFunc ;==>_comprobacioControles
Func _setTipsControles()
GUICtrlSetTip($lblmostrarExtensiones, "Activa o desactiva la visualización " & @CRLF & " de extensiones de archivos")
GUICtrlSetTip($btnFile, "Seleccione el archivo a proteger")
GUICtrlSetTip($btnImage, "Seleccione la imagen en la que va a esconder el archivo.")
GUICtrlSetTip($btnAplicar, "Copia el archivo dentro de la imagen.")
GUICtrlSetTip($lblAyudaRapida, "Indica como utilizar Private File")
GUICtrlSetTip($inpNuevoNombre, "Escriba un nombre nuevo para el archivo")
EndFunc ;==>_setTipsControles
Func _ayudaRapida()
Local $dimVentana = WinGetPos('Private File')
Local $size = WinGetClientSize("Private File")
_WinAPI_MoveWindow($guiPrincipal, $size[0] - 46, $size[1]-13, $dimVentana[2], $dimVentana[3], True)
MsgBox(64, "Private File", "Ayuda Rápida" & @CRLF & @CRLF & " A continuación se moverá el mouse en el orden que debe seguir los pasos." & _
@CRLF & "Por favor no mueva el mouse.", 7, $guiPrincipal)
Sleep(1000)
GUICtrlSetState($lblAyudaRapida, $GUI_DISABLE)
_direccionamientoMouse("Private File", $btnFile, 35)
_direccionamientoMouse("Private File", $btnImage, 35)
_direccionamientoMouse("Private File", $inpNuevoNombre, 35)
_direccionamientoMouse("Private File", $btnAplicar, 35)
GUICtrlSetState($lblAyudaRapida, $GUI_ENABLE)
MsgBox(64, "Private File", "Ayuda rápida finalizada.!" & @CRLF & "Haga clic en Aceptar.", -1, $guiPrincipal)
EndFunc ;==>_ayudaRapida
Func _direccionamientoMouse($tituloVentana, $boton_id, $altura)
GUICtrlSetState($boton_id, $GUI_FOCUS)
Local $posButton = ControlGetPos($tituloVentana, "", $boton_id)
Local $dimVentana = WinGetPos($tituloVentana)
MouseMove($posButton[0] + $dimVentana[0] + $posButton[3], $posButton[1] + $dimVentana[1] + $altura)
Sleep(2000)
EndFunc ;==>_direccionamientoMouse
Func _cerrarInterfaz()
Exit
EndFunc ;==>_cerrarInterfaz
;~ Run(@ComSpec & " /c " & 'COPY /B ' &'"'& GUICtrlRead($inpImage) &'"'& ' + ' & '"'&GUICtrlRead($inpFile)&'"' & ' "D:\images_nuevESITA.jpg"', "",@SW_HIDE)
;ejmplo01: Run(@ComSpec & " /c " & "dir c:\ ", "", @SW_HIDE, $STDOUT_CHILD)
;ejemplo: Run(@ComSpec & " /c " & "COPY /B D:\imagen.jpg + D:\archivo.rar D:\imagen_nuevESITA.jpg", "",@SW_HIDE)
;~ ConsoleWrite($posButton[0] & " oooo " & $posButton[1] &@CRLF & "Posición ventana."& @CRLF & $dimVentana[0] &" oooo "&$dimVentana[1])