Página 1 de 2
CREANDO UN ANTIVIRUS
Publicado: 10 Oct 2011, 13:10
por yasmany
Hola srs.
Como les decia iva a volver y durante todo este tiempo he estado estudiando el manual de autoit
esta muy interesante.....y tambien de ves en cuando he revisado el foro para tener basees
Estoy en la construccion de un antivirus y QUISIERA q me den una manito
1- hABRA COMO PONER EL NOMBRE DE LA UNIDAD Alado de las letras de las unidades q aparecen en el combo
2 -Digamos q estoy en la pestaña Herramientas y HAGO CLIC [Analizar] se podria hacer q pase ala pestaña
Registro PARA ver lo q se ha analizado
Aqui va un prototipo
ESTE ES UNA PARTE DEL CODE
**************************************************+
Código: Seleccionar todo
#include <ComboConstants.au3>
#include <GUIComboBox.au3>
#include <GUIConstantsEx.au3>
; GUI
$interfaz = GUICreate("Antivirus USBCTRL", 620, 405, -1, -1)
;BOTONES
$btnAnalizar = GUICtrlCreateButton("&Analizar", 369, 355, 60, 25)
GUICtrlSetTip(-1, "Analizar unidad seleccionada")
;UNIDADES
$Combo1 = GUICtrlCreateCombo("Seleccione la unidad", 10, 60, 193, 25, BitOR($CBS_DROPDOWN, $CBS_UPPERCASE, $CBS_AUTOHSCROLL))
_GUICtrlComboBox_AddDir($Combo1, "", $DDL_DRIVES, False)
;REGISTRO
$tab = GUICtrlCreateTab(10, 100, 600, 250)
$itemRegistroDeSucesos = GUICtrlCreateTabItem("Registro")
$lista = GUICtrlCreateListView("Deteccion |Tipo ", 18, 150, 575, 190, -1)
$itemRegistroDeSucesos = GUICtrlCreateTabItem("Herramientas")
GUISetState(@SW_SHOW)
;CASOS
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btnAnalizar
Clic_Analizar()
EndSwitch
WEnd
Func Clic_Analizar()
$unidad=GUICtrlRead($Combo1)
$busqueda=FileFindFirstFile($unidad&"\*.*")
While 1
$elementos=FileFindNextFile($busqueda)
if @error then ExitLoop
GUICtrlCreateListViewItem($unidad&"\"&$elementos&"|TIIIIPO|",$lista)
WEnd
FileClose($busqueda)
EndFunc ;==>Clic_Aplicar
**************************************************+
3- Como hago para eliminar todo el contenido del ListView HE INTENTADO y no se como
4- Como se desplaza la barra hacia abajo del listview para poder observar la ultima linea
cada vez q se analiza [Analizar]
y la ultima
5- Mediante un boton [Desinfectar] obtener todo los valores de la primera columna e irles quitando el atributo de oculto
(Lo de quitar atributos ya lo entendi gracias a Bassicos y Ximorro) me interesaria saber como obtener los valores osea
la direccion (D:\trabajos)
ME DISCULPAN Q NO HE PUESTO TODO EL CODE SOLO PUSE ALGO REFERENTE A LO Q TENGO en mi miniproyecto LLAMADO antivirus q YA VA POR
LA LINEA 800 y algo mas Y me dio ganas de ajustar esos detalles.
DESDE YA MUCHAS GRACIAS
ZALUDOZ
PD: Cual es el comando para abrir un directorio (CARPETA )o unidad
Re: CREANDO UN ANTIVIRUS
Publicado: 11 Oct 2011, 15:27
por arkcrew
Hola amigo, estoy pensado cosas para tu código, en breve recibirás más información sobre mis ideas, y posibles cosas que añadir a tu código..
Aqui va la solucion a eliminar datos del listview
Código: Seleccionar todo
#include <GuiListView.au3>
_GUICtrlListView_DeleteAllItems($tu_listview)
Espero que te sirva, un saludo!
Re: CREANDO UN ANTIVIRUS
Publicado: 11 Oct 2011, 15:40
por yasmany
Hola carnal arkcrew
Gracias por la respuesta, podrias ayudarme con el resto de preguntas que estan planteadas
en cuanto culmine os daré para observalo para que brinden nuevas ideas e irlo mejorando
me he pasado algunas malasnoches aun realizandolo
Zalu2
Re: CREANDO UN ANTIVIRUS
Publicado: 11 Oct 2011, 16:37
por arkcrew
Mira, te he añadido creo cosas muy útiles, como lo que pedias del scrolldown (lo saqué de la página de autoitsript.com, créditos a DeSwa) y lo demás que lo he implementado en un momento...
Te dejo el code y te explico:
Código: Seleccionar todo
#include <ComboConstants.au3>
#include <GUIComboBox.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
; GUI
$interfaz = GUICreate("Antivirus USBCTRL", 620, 405, -1, -1)
;BOTONES
$btnAnalizar = GUICtrlCreateButton("&Analizar", 369, 355, 60, 25)
GUICtrlSetTip(-1, "Analizar unidad seleccionada")
;UNIDADES
$Combo1 = GUICtrlCreateCombo("Seleccione la unidad", 10, 60, 260, 25, BitOR($CBS_DROPDOWN, $CBS_UPPERCASE, $CBS_AUTOHSCROLL))
;_GUICtrlComboBox_AddDir($Combo1, "", $DDL_DRIVES, False)
getdrives()
;REGISTRO
$tab = GUICtrlCreateTab(10, 100, 600, 250)
$itemRegistroDeSucesos = GUICtrlCreateTabItem("Registro")
$lista = GUICtrlCreateListView("Deteccion |Tipo ", 18, 150, 575, 190, -1)
$itemRegistroDeSucesos = GUICtrlCreateTabItem("Herramientas")
GUISetState(@SW_SHOW)
;CASOS
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btnAnalizar
Clic_Analizar()
EndSwitch
WEnd
Func Clic_Analizar()
_GUICtrlListView_DeleteAllItems($lista)
$contenidocombo = StringReplace(GUICtrlRead($Combo1), "(", "<unidad>")
$contenidocombo = StringReplace($contenidocombo, ")", "</unidad>")
$unidad = StringRegExp($contenidocombo, "<(?i)unidad>(.*?)</(?i)unidad>", 1, 1)
$unidad = $unidad[0]
$busqueda = FileFindFirstFile($unidad & "\*.*")
While 1
$elementos = FileFindNextFile($busqueda)
If @error Then ExitLoop
GUICtrlCreateListViewItem($unidad & "\" & $elementos & "|TIIIIPO|", $lista)
bajar()
WEnd
FileClose($busqueda)
EndFunc ;==>Clic_Analizar
Func getdrives()
$var = DriveGetDrive("all")
If Not @error Then
For $i = 1 To $var[0]
GUICtrlSetData($Combo1, DriveGetLabel($var[$i]) & "(" & $var[$i] & ")" & "Tipo: " & DriveGetType($var[$i]))
Next
EndIf
EndFunc ;==>getdrives
Func bajar()
$i = _GUICtrlListView_GetItemCount($lista)
_GUICtrlListView_ScrollItem($Lista, $i)
EndFunc
Func _GUICtrlListView_ScrollItem($ListView1, $iItemIndex=-1, $fPartialOK = True, $iIncrement = 16)
Local $iSuccess1, $iSuccess2
If $iItemIndex = -1 Then $iItemIndex = _GUICtrlListView_GetItemCount($ListView1)-1
$iSuccess1 = _GUICtrlListView_Scroll($ListView1, 0, $iIncrement)
$iSuccess2 = _GUICtrlListView_EnsureVisible($ListView1, $iItemIndex, $fPartialOK)
Return $iSuccess1 And $iSuccess2
EndFunc
Te he corregido algunas funciones como verás, por ejemplo a la hora de mostrar las unidades, muestra más información, y como verás, para el análisis, he modifiocado alguna cosilla en cuanto a leer la letra de la unidad del combox.
He añadido además la función para vaciar el list cada vez que se pulsa en analizar...
Espero ver más código de la aplicación..
Un saludo
Re: CREANDO UN ANTIVIRUS
Publicado: 11 Oct 2011, 17:31
por yasmany
Hola de nuevo
Gracias por el aporte muchas gracias
Soy principiante TE PIDO puedes poner comentarios en cada code q ubicas (para entender q hace c/u)
Hola hay una pequeña fallita Cuando retiro la unidad esta todavia se muestra en el combo (Como se soluciona)
Zaludos
Re: CREANDO UN ANTIVIRUS
Publicado: 11 Oct 2011, 17:44
por yasmany
GRACIAS CARNAL DE NUEVO he aprendido ESO DE LLAMAR UNA FUNCION creoq de esa forma se ahorra utilizar tanto codigo (desde mi forma de ver)
Solucionaste mi problema sobre bajar la barra ......mil gracias
Hay algunas cositas mas...ACERCA de q si estoy en otra pestaña y cuando hago clic [Aanalizar] deberia ir hacia la pestaña Registro
Podrias explicarme hacerca del for q utilizas
Me disculpas por mi falta de experiencia
Re: CREANDO UN ANTIVIRUS
Publicado: 11 Oct 2011, 18:51
por yasmany
Puse un mensaje al final pero no lo muestra solo la primer linea del mensaje muestra
Código: Seleccionar todo
#include <ComboConstants.au3>
#include <GUIComboBox.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
; GUI
$interfaz = GUICreate("Antivirus USBCTRL", 620, 405, -1, -1)
;BOTONES
$btnAnalizar = GUICtrlCreateButton("&Analizar", 369, 355, 60, 25)
GUICtrlSetTip(-1, "Analizar unidad seleccionada")
;UNIDADES
$Combo1 = GUICtrlCreateCombo("Seleccione la unidad", 10, 60, 260, 25, BitOR($CBS_DROPDOWN, $CBS_UPPERCASE, $CBS_AUTOHSCROLL))
;_GUICtrlComboBox_AddDir($Combo1, "", $DDL_DRIVES, False)
getdrives()
;REGISTRO
$tab = GUICtrlCreateTab(10, 100, 600, 250)
$itemRegistroDeSucesos = GUICtrlCreateTabItem("Registro")
$lista = GUICtrlCreateListView("Deteccion |Tipo ", 18, 150, 575, 190, -1)
$itemRegistroDeSucesos = GUICtrlCreateTabItem("Herramientas")
GUISetState(@SW_SHOW)
;CASOS
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btnAnalizar
Clic_Analizar()
EndSwitch
WEnd
Func Clic_Analizar()
_GUICtrlListView_DeleteAllItems($lista)
$contenidocombo = StringReplace(GUICtrlRead($Combo1), "(", "<unidad>")
$contenidocombo = StringReplace($contenidocombo, ")", "</unidad>")
$unidad = StringRegExp($contenidocombo, "<(?i)unidad>(.*?)</(?i)unidad>", 1, 1)
$unidad = $unidad[0]
$busqueda = FileFindFirstFile($unidad & "\*.*")
While 1
$elementos = FileFindNextFile($busqueda)
If @error Then ExitLoop
GUICtrlCreateListViewItem($unidad & "\" & $elementos & "|TIIIIPO|", $lista)
bajar() ;llamamos a la funcion
WEnd
FileClose($busqueda)
GUICtrlCreateListViewItem("Analisis Finalizado", $lista)
GUICtrlCreateListViewItem(@HOUR & ":" & @MIN & ":" & @SEC, $lista)
GUICtrlSetColor(-1, 0x0000ff) ; azul
bajar() ;LA PONGO AQUI PERO NO BAJA HASTA EL MENSAJE FINAL
EndFunc ;==>Clic_Analizar
Func getdrives()
$var = DriveGetDrive("all")
If Not @error Then
For $i = 1 To $var[0]
GUICtrlSetData($Combo1, DriveGetLabel($var[$i]) & "(" & $var[$i] & ")" )
Next
EndIf
EndFunc ;==>getdrives
Func bajar()
$i = _GUICtrlListView_GetItemCount($lista)
_GUICtrlListView_ScrollItem($Lista, $i)
EndFunc
Func _GUICtrlListView_ScrollItem($ListView1, $iItemIndex=-1, $fPartialOK = True, $iIncrement = 16)
Local $iSuccess1, $iSuccess2
If $iItemIndex = -1 Then $iItemIndex = _GUICtrlListView_GetItemCount($ListView1)-1
$iSuccess1 = _GUICtrlListView_Scroll($ListView1, 0, $iIncrement)
$iSuccess2 = _GUICtrlListView_EnsureVisible($ListView1, $iItemIndex, $fPartialOK)
Return $iSuccess1 And $iSuccess2
EndFunc
como le ubico
Re: CREANDO UN ANTIVIRUS
Publicado: 11 Oct 2011, 19:03
por arkcrew
Dejo las funciones comentadas...
Código: Seleccionar todo
Func Clic_Analizar() ; funcio analizar
_GUICtrlListView_DeleteAllItems($lista) ; Elimino todo el contenido del listview
If GUICtrlRead($Combo1) = "Seleccione la unidad" Then ; condicion: si el contenido del combo NO es una unidad muesto error
MsgBox(0, "Error", "Selecicone unidad")
Else ; de cualquier otra manera, continuo con el proceso
#cs
La funcion stringreplace, nos permite reemplazar el caracter deseado dentro de una cadena de texto
por el que especifiquemos
#ce
$contenidocombo = StringReplace(GUICtrlRead($Combo1), "(", "<unidad>")
$contenidocombo = StringReplace($contenidocombo, ")", "</unidad>")
#cs
La funcion stringregexp, nos permite exportar el contenido que hay entre dos variables definidas, como es el caso de
<unidad>XXXX</unidad>, al pasar la funcion, obtengo de resultado XXXX que en este caso sería la letra de la unidad
#ce
$unidad = StringRegExp($contenidocombo, "<(?i)unidad>(.*?)</(?i)unidad>", 1, 1)
$unidad = $unidad[0]
; defino $unidad como $unidad[0] ya que se trata de una cadena de texto, que en este caso, solo contiene un valor en su
; interior, establecido para el valor [0], si tuviera mas de uno, pues seguiria [1], [2] etc
$busqueda = FileFindFirstFile($unidad & "\*.*")
While 1
$elementos = FileFindNextFile($busqueda)
If @error Then ExitLoop
GUICtrlCreateListViewItem($unidad & "\" & $elementos & "|TIIIIPO|", $lista)
bajar()
WEnd
FileClose($busqueda)
EndIf
EndFunc ;==>Clic_Analizar
Func getdrives()
;esta función nos recoe todos los dispositivos conectados al pc
$var = DriveGetDrive("all"); se alamcenan en est variable
If Not @error Then ; si no hay error continuamos
For $i = 1 To $var[0]
;meto un for, es decir un bucle que irá desde el valor 0 hasta $var[0], que es el número max de dispositivos que hay
;si suponemos que tenemos un total de 10 dispositivos, $var[0] valdrá 10
If DriveStatus($var[$i]) <> "READY" Then ; soluciona tu error, si el dispositivo no está listo, no lo muestra, así se acelera todo
Else
GUICtrlSetData($Combo1, DriveGetLabel($var[$i]) & "(" & $var[$i] & ")" & "Tipo: " & DriveGetType($var[$i]))
EndIf
Next
EndIf
EndFunc ;==>getdrives
Espero que me entiendas XD no soy muy bueno explicando, pero se intenta,
He aprovechado y he corregido algunos fallos que se me han pasado... espero ver tu code de 800 lineas, aunque para un antivirus.. si no controlas los comandos de bucles, while-wend, do-until y for-next... mal vamos, te sugiero que te los mires en la ayuda de autoit
Un saludo!
Re: CREANDO UN ANTIVIRUS
Publicado: 11 Oct 2011, 19:29
por yasmany
ok no os preocupeis
Lo publicaré en un cierto tiempo 1 o 2 semanas estoy en eso
ayudadme sobre pasar a la siguiente pestaña estando en otra mediante el clic en [analizar]
Re: CREANDO UN ANTIVIRUS
Publicado: 17 Oct 2011, 09:38
por Ximorro
yasmany, ¿qué va a hacer el antivirus? porque por ahora sólo veo que intentas desproteger los archivos ocultos, lo que no sé para qué sirve al antivirus pues igual se puede acceder a los archivos aunque estén ocultos.
¿Contra qué tipo de virus vas a proteger? ¿cómo? Aunque no tengas la interfaz nos podrías mostrar el código que protege un archivo o comprueba si un archivo tiene virus, eso sería muy interesante.
¿800 líneas de código y acabas de descubrir las funciones? Igual vas muy rápido, has escrito mucho y aún no controlas los mecanismos básicos de la programación como funciones o bucles. Mírate eso bien, además con funciones probablemente podrás reducir el código al agrupar tareas repetitivas.
Re: CREANDO UN ANTIVIRUS
Publicado: 17 Oct 2011, 19:31
por yasmany
EL "ANTIVIRUS" es solo para unidades removibles hasta el momento
_____________________________________________
Hola XIMORRO q tal ... he estado estudiando un poco (claro recien empecé con esta movida y aun no se NADA)
Lo que quiero hacer nonono lo que estoy realizando es...mejor te doy un ejemplo
Tu mas que yo conoces el antivirus USB security
http://www.techgravy.net/2008/06/usb-di ... ction.html
este solo lo que hace es detectar exes DESDE MI PUNTO DE VISTA sehan buenos o malos igual te los muestra y MANIPULAR el registro
....Bueno lo mio es algo parecido
Pues es simple.. detecta accesos directos y una cierta lista de carpetas q contienes ejecutables y ejecutables en la raiz de la memoria de acuerdo a la lista de jecutables (MUCHA REDUNDANCIA LA MIA )... pero bueno
Tambien muestra los archivos ocultos TODOS lo que muestra lo hace en diferente color algo parecido a la PRESENTACION " DE REGISTRO DE SUCESOS" de NOD32
Es decir :
_______________________________________________________________
Detalles TIPO ESTADO
____________________________|__________|_____________|__________
ocultos color GRis | OCULTO | estable |
accesos direc OTRO COLOR | Acceso di | estable |
carpetas OTRO COLOR | Car conten | estable |
_________________________________________________________________
Tambien incorpora otras opciones como
Rendimiento del sistema (en la que limpias temporales y algunas cosas mas)
Para ver informacion del sistema, y version del WINDOWS , ggg y del Programa.
Y desde el programa podes instalarlo HAY UNA OCION EN EL MENU PARA INSTALARLO
OTRa opcion es para proteger la unidad MIRA esto era lo que no me entendias hace un timpillo
Mediante la creacion de una carpeta llamada CON, A ESTA carpeta ningun virus podra modificarla, eliminarla por lo que
la creo mediante DirCreate ("\\.\g:\con") esos dos SLAsh FUERZAN LA CREACION DE ESAS CARPETAS AY UN MONTON DE CARPETAS q NO se pueden crear de forma simple
POR LO QUE APROVECHO LA SITUACION y ubico dentro el antivirus para que puedan acceder y desde ahi tambien puedan DESINFECTAR la unidad ya que esta carpeta siempre estará visible y nunca será ocultada por nada, ASI lo intenten
Y para quitar realizo lo mismo remplazo CREATE X REMOVE y listo eliminada..
Hace cierto tiempo estudiaba sobre la manipulacion de los registros Y EN FIN SI SE UN POQUITO DE ESO
- Iniciar con el sistema (esto para cuando termine de hacer el Scanner)
- Agregar al menu contextual ("Utilizar Antivirus USBCTRL") pero mi falla es aunque si lo abre al antivirus NO LE HE HECHO PARA Q TOME LA UNIDAD Q HA HECHO CLIC osea la letra..(si hiciera en la G: ) esa letra la ubique en el combo y la analize PERO BUENO VOY POCO A POQUITO
HAQUI OS DEJO UNPAR DE IMAGNES
http://imageshack.us/photo/my-images/710/empezando.png/
http://imageshack.us/photo/my-images/70 ... ando2.png/
Bueno no es grancosa pero por algo se empieza no les parece
Re: CREANDO UN ANTIVIRUS
Publicado: 18 Oct 2011, 08:52
por Ximorro
¿Entonces es un detector de malware? ¿Funcionará buscando Exes de malware que tengas en una lista predefinida?
¿Cómo ejecutas un programa desde una carpeta de esas especial? ¿Funciona hacer...:
\\.\g:\con\miprograma.exe ?
Oye el GUI está muy chulo, muy profesional.
¿El tamaño del disco está bien calculado? Si son KBytes hay muchos decimales ¿no?
Re: CREANDO UN ANTIVIRUS
Publicado: 18 Oct 2011, 09:31
por arkcrew
Estoy con Ximorro, exactamente, dices que es algo como el usb security, pero exactamente como lo vas a hacer para detectar el malwqare, porque por ahora veo que solo muestras si nel archivo es oculto etc..
En cuanto a la interfaz, la verdad está muy currada, y en cuanto al tamaño del disco.. quizas sería mejor que redondearas a MegaBytes no?
Un saludo
Re: CREANDO UN ANTIVIRUS
Publicado: 19 Oct 2011, 15:18
por yasmany
Hola de nuevo
Pues si es un detector de malware...y de funcionar claro q funca de eso no hay duda...algunos de mis compañeros de clase y un ingeniero tambien tienen instalado mi software bueno tambien en alguna maquinas del laboratorio ...y si va de maravilla pues digo q uno de los ingenieros tiene por lo que ayer nos iba a pasar un proyecto de programacion en java y cuando introducia la memoria de algunos este sonaba gggg.........a pues les comento que el programa tambien suelta un sonido cuando el scanner ha detectado algun tipo de malware.... el tipico sonido de avast "Aviso su sistema tiene virus" PERO yo le modifique la voz le hice que se gruesa "Hombre"...
Acerca de carpetas especiales,en estas no hay como ingresar al contenido.
La carpeta con no es una carpeta especial....por lo que se ingresa sencillamente POR lo que tambien no hay como eliminarla, renombrarla u ocultarla..esta es una ventaja para que el programa se encuentre dentro, en caso de infeccion esta será la unica carpeta que esté visible....
ARkcrew como yo decia anteriormente eso de ocultos era un ejemplo..no digo q solo eso detecta pero bueno
Alguien de vosotros podeis ayudarme a redondear esos kb en mb
Gracias por la opinion acerca del GUI
ZALU2
Re: CREANDO UN ANTIVIRUS
Publicado: 20 Oct 2011, 08:17
por Ximorro
¿Cómo has calculado esos kb? ¿por qué tiene tantos decimales?
Para pasar a megas simplemente divide entre 1024.
¿¿Qué ya está instalado en un montón de ordenadores?? ¿Pero por ahora qué hace el programa, para qué lo están usando?
Por ejemplo lo de limpiar temporales sólo vale la primera vez que lo ejecutas, que acabas de ver qué carpetas hay que borrar. Como te decía esos nombres son aleatorios... ¿¿quieres decir que hay que modificar y recompilar el programa cada vez que quieres limpiar los temporales??
Me gustaría ver el núcleo del programa, la parte que detecta el malware.
Re: CREANDO UN ANTIVIRUS
Publicado: 20 Oct 2011, 08:53
por yasmany
Hola de nuevo carnales
Pues no lo estan usando al que ahora lo realizo...si no un prototipo creado en otro lenguaje
En este lenguaje lo estoy mejorando en todo.........el anterior pesaba 9mb ahora pesará no mas de 2 mgb
Bueno ya estaremos dialogando luego.... he terminado un programita para ocultar y desocultar archivos y carpetas este es mi code
Código: Seleccionar todo
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=folder.ico
#AutoIt3Wrapper_Outfile=Show_AND_Hide_Files.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Res_Comment=Software gratuito [email protected]
#AutoIt3Wrapper_Res_Description=Desocultador de archivos y carpetas
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Yasmany Curimilma
#AutoIt3Wrapper_Res_Language=1034
#Obfuscator_Parameters=/striponly
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
FileInstall("12.jpg", @TempDir & "\", 1)
Global $unidad
$GUI = GUICreate("Hide and Show", 250, 370, -1, -1)
GUISetBkColor(0xFFFFFF)
GUICtrlCreatePic(@TempDir & "\12.jpg", 0, 0, 250, 50)
$desocultar = GUICtrlCreateButton("Desocultar", 175, 335, 70, 30)
$ocultar = GUICtrlCreateButton("Ocultar", 105, 335, 70, 30)
$combo = GUICtrlCreateCombo("Seleccione la unidad", 10, 60, 230, -1, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $CBS_UPPERCASE)) ;#include <ComboConstants.au3>
obtenerUnidades()
$lista = GUICtrlCreateList("", 10, 85, 230, 210)
GUICtrlSetColor(-1, 0x666666)
GUISetState()
$ch_SelectAll = GUICtrlCreateCheckbox("Realizar accion para toda la lista", 10, 290, 240, 16)
$ch_mostrarTodos = GUICtrlCreateCheckbox("Mostrar todos los archivos", 10, 310, 240, 16)
GUICtrlCreateLabel("By: YMCT", 12, 345, 80, 50)
GUICtrlSetFont(-1, 9, 800, 0, "MS Serif")
GUICtrlSetState(-1, $GUI_DISABLE)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
FileDelete(@TempDir & "\12.jpg")
Exit
Case $combo
verOcultos()
Case $ch_mostrarTodos
AllFiles()
Case $desocultar
startShow()
Case $ocultar
startHide()
EndSwitch
WEnd
Func obtenerUnidades()
$var = DriveGetDrive("All")
If Not @error Then
For $i = 1 To $var[0]
If DriveStatus($var[$i]) <> "READY" Then
Else
GUICtrlSetData($combo, DriveGetLabel($var[$i]) & " (" & $var[$i] & ")")
EndIf
Next
EndIf
EndFunc ;==>obtenerUnidades
Func valorOut()
$comboContenido1 = StringReplace(GUICtrlRead($combo), "(", "<unidad>")
$comboContenido2 = StringReplace($comboContenido1, ")", "</unidad>")
$unidad1 = StringRegExp($comboContenido2, "<(?i)unidad>(.*?)</(?i)unidad>", 1, 1)
$unidad = $unidad1[0]
EndFunc ;==>valorOut
Func verOcultos()
If GUICtrlRead($ch_mostrarTodos) = $GUI_CHECKED Then
AllFiles()
Else
GUICtrlSetColor($lista, 0x666666)
GUICtrlSetData($lista, "")
If GUICtrlRead($combo) = "Seleccione la unidad" Then
GUICtrlSetState($ocultar, $GUI_DISABLE)
GUICtrlSetState($desocultar, $GUI_DISABLE)
Else
valorOut(); tomo los valores comprendidos en el item del combo
$status = DriveStatus($unidad)
If StringInStr($status, "NOREADY") Then
MsgBox(48, "Aviso", "Unidad no disponible")
ElseIf StringInStr($status, "INVALID") Then
MsgBox(48, "Aviso", "Unidad no disponible")
Else
GUICtrlSetState($ocultar, $GUI_ENABLE)
GUICtrlSetState($desocultar, $GUI_ENABLE)
$search = FileFindFirstFile($unidad & "\*.*")
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
$estado = FileGetAttrib($unidad & "\" & $file)
If StringInStr($estado, "H") Then
GUICtrlSetData($lista, $unidad & "\" & $file)
EndIf
WEnd
FileClose($search)
EndIf
EndIf
EndIf
EndFunc ;==>verOcultos
Func AllFiles()
If GUICtrlRead($combo) = "Seleccione la unidad" Then
Else
valorOut()
If FileExists($unidad) Then
If GUICtrlRead($ch_mostrarTodos) = $GUI_CHECKED Then
$search = FileFindFirstFile($unidad & "\*.*")
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
GUICtrlSetData($lista, $unidad & "\" & $file)
WEnd
FileClose($search)
GUICtrlSetColor($lista, 0x000000)
Else
verOcultos()
EndIf
Else
MsgBox(16, "Aviso", "La unidad no está disponible")
EndIf
EndIf
EndFunc ;==>AllFiles
Func startShow()
$verifi = GUICtrlRead($combo)
If ($verifi) = "Seleccione la unidad" Then
MsgBox(48, "Aviso", "Debe selecionar la unidad")
GUICtrlSetState($combo, $GUI_FOCUS)
Else
valorOut()
If FileExists($unidad) Then
$est = GUICtrlRead($ch_SelectAll)
If ($est) = $GUI_CHECKED Then
$search = FileFindFirstFile($unidad & "\*.*")
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
FileSetAttrib($unidad & "\" & $file, "-sh")
WEnd
FileClose($search)
verOcultos()
Else
$select = GUICtrlRead($lista)
If $select == "" Then
MsgBox(48, "Aviso", "Debe seleccionar un item de la lista")
ElseIf not ($select) Then
MsgBox(48, "Aviso", "Elemento no encontrado")
Else
FileSetAttrib($select, "-raSH")
$verificar = FileGetAttrib($select)
If StringInStr($verificar, "H") Then
MsgBox(16, "Aviso", "Acceso denegado")
Else
verOcultos()
EndIf
EndIf
EndIf
Else
MsgBox(48, "Aviso", "Unidad no disonible")
EndIf
EndIf
EndFunc ;==>startShow
Func startHide()
$verifi = GUICtrlRead($combo)
If ($verifi) = "Seleccione la unidad" Then
MsgBox(48, "Aviso", "Debe selecionar la unidad")
GUICtrlSetState($combo, $GUI_FOCUS)
Else
valorOut()
If FileExists($unidad) Then
$est = GUICtrlRead($ch_SelectAll)
If ($est) = $GUI_CHECKED Then
$search = FileFindFirstFile($unidad & "\*.*")
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
FileSetAttrib($unidad & "\" & $file, "+sh")
WEnd
FileClose($search)
verOcultos()
Else
$select = GUICtrlRead($lista)
If $select == "" Then
MsgBox(48, "Aviso", "Debe seleccionar un item de la lista")
ElseIf not ($select) Then
MsgBox(48, "Aviso", "Elemento no encontrado")
Else
FileSetAttrib($select, "+rash")
$verificar = FileGetAttrib($select)
If StringInStr($verificar, "H") Then
MsgBox(16, "Aviso", "Acceso denegado")
Else
verOcultos()
EndIf
EndIf
EndIf
Else
MsgBox(48, "Aviso", "Unidad no disponible")
EndIf
EndIf
EndFunc ;==>startHide
ENLACE DE IMAGEN
http://imageshack.us/photo/my-images/83 ... grama.jpg/
AQUI EL ENLACE PARA DESCARGARLO
http://199.91.153.109/ab3ksixxow0g/t0tf ... _Files.exe
PESA 325.87 KB
No creo que haga falta describirlo
Por fa denme sugerencias VAYA Q SI LAS NECESITO como podria hacer para ahorrar mas codigo
Esta bien en publicar estos codigos sencillos PARA Q ALGUIEN VENGA Y SE APODERE?? YA Q ES MUY FACIL DE ENTENDERLO
ZALU2
Re: CREANDO UN ANTIVIRUS
Publicado: 20 Oct 2011, 09:14
por Ximorro
¡Qué chulos te quedan los GUIs!
Alucino con el código, hace nada no te aclarabas con los bucles y funciones y has hecho un código superbien estructurado y limpio.
No tengo tiempo para analizarlo con detalle, pero creo que no hace falta, tiene muy buena pinta.
Una cosa sí me ha llamado la atención, porque casualmente he trabajado últimamente con expresiones regulares:
¿Por qué haces los
StringReplace antes del
StringRegExp? Puedes hacerlo directamente con el
StringRegExp mirando directamente los paréntesis en vez de esa especie de xml que haces en el
StringReplace.
Esta bien en publicar estos codigos sencillos PARA Q ALGUIEN VENGA Y SE APODERE?? YA Q ES MUY FACIL DE ENTENDERLO
¿Que si está bien?
Tú paséate por el foro, LO NORMAL es que la gente muestre sus códigos porque este es un foro participativo, tanto para pedir y dar ayuda a la programación como para compartir códigos. Claro que puedes ocultar el código, pero lo normal para pedir una colaboración es mostrar código. Además los códigos que posteamos aquí son ejemplos para que los que saben menos que nosotros aprendan con ellos y en un futuro hagan programas estupendos que nosotros mismos disfrutaremos.
¿Apoderarse? No, eso estaría muy feo, lo que queda claro es que si tú has hecho un código, ese código es tuyo y si se usa hay que dar los créditos correspondientes. Pero no te preocupes,
puedes mostrar el código y además protegerlo. Busca información en internet sobre las licencias Creative Commons, puedes licenciar tu software de diferentes maneras (incluso impidiendo que puedan modificarlo, aunque lo mejor es que se pueda modificar con permiso o dando créditos), ¡y es una licencia gratuita!
También, claro, puedes licenciarlo pagando un copyright.
Re: CREANDO UN ANTIVIRUS
Publicado: 20 Oct 2011, 09:47
por arkcrew
Ximorro, lo de los stringreg y eso es cosa mía, le pasé en un post anterior esa función y la ha copiado tal cual, lo programé así para que le resultara más facil de entender, no por otra cosa...
Saludos
Re: CREANDO UN ANTIVIRUS
Publicado: 20 Oct 2011, 09:58
por Ximorro
Hombre, si no lo he entendido mal esto sería equivalente a las
tres líneas:
$unidad1 = StringRegExp($comboContenido2, "\((.*?)\)", 1, 1)
Si se entiende el otro este también ¿no? (que no es que sea tan fácil de entender, simplemente es igual de complicado
)
Por cierto, que el
(?i) no hacía falta, a parte que de hacer falta sólo habría que activarlo una vez.
Otra cosa, creo que he comentado antes que esa no es la forma correcta de comprobar los Checkboxes...
Os lo decía aquí
http://www.emesn.com/autoitforum/viewto ... 997#p11997
No lo digo yo, que no es por ser pesado, retransmito lo que dice en el manual...
Re: CREANDO UN ANTIVIRUS
Publicado: 20 Oct 2011, 10:03
por arkcrew
JAjajaja, es cierto tienes razón, podría directam,ente leer dentro de los () en evz de reemplazarlos por <unidad> , que fallo, no me dí cuenta, aunque tampoco puse mucha antención, me limité a copiar una funcion que tenía ya programada en una apli y la adapté al contenido, aunque ciertamente si, como dices se ahorra código y tiempo, ya que evitas los stringreplace y con eso optimizas algo más el código..
Saludos!