elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 09:00  


Tema destacado: Últimos eventos sobre seguridad/inseguridad

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  [RESUELTO]¿como comprobar varios resultados en un solo valor? - GetFileAttribute
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [RESUELTO]¿como comprobar varios resultados en un solo valor? - GetFileAttribute  (Leído 717 veces)
AlxSpy

Desconectado Desconectado

Mensajes: 137


Ver Perfil
[RESUELTO]¿como comprobar varios resultados en un solo valor? - GetFileAttribute
« en: 23 Agosto 2011, 06:58 »

el api GetFileAttributes en un solo resultado devuelve todos los atributos de un archivo ejem : +s +r / +s +r +h o lo que sea, para comprobar cada atributo que devuelva en ese UNICO resultado lo hago de esta forma

Código:
if res = FILE_ATTRIBUTES_SYSTEM then atributos = atributos & "+S "
if res = FILE_ATTRIBUTES_HIDDEN then atributos = atributos & "+H"
if res = FILE_ATTRIBUTES_READONLY + FILE_SYSTEMHIDDEN then atributos = atributos & "+R +H "[

weno y asi se hace todo como en 30 lineas :S, ¿habra alguna manera mas simplificada de comprobar sin tanto codigo? ¿podrian dar alguna explicacion? o url donde expliquen.


« Última modificación: 28 Agosto 2011, 07:10 por AlxSpy » En línea
AlxSpy

Desconectado Desconectado

Mensajes: 137


Ver Perfil
Re: ¿como comprobar varios resultados en un solo valor? - GetFileAttributes
« Respuesta #1 en: 25 Agosto 2011, 02:13 »

logre simplificar mi codigo de 30 lineas a 9 lineas:

Código:
    Dim Atributos As String, Res As Long
    Res = GetFileAttributes(txtFile.Text)
   
    If Res = FILE_ATTRIBUTE_NORMAL Then Res = Res - FILE_ATTRIBUTE_NORMAL: Atributos = Atributos & "+N "
   
    If Res >= FILE_ATTRIBUTE_ARCHIVE And Res <= (FILE_ATTRIBUTE_ARCHIVE + FILE_ATTRIBUTE_HIDDEN + FILE_ATTRIBUTE_READONLY + FILE_ATTRIBUTE_SYSTEM) Then Res = Res - FILE_ATTRIBUTE_ARCHIVE: Atributos = Atributos & "+A "
   
    If Res >= FILE_ATTRIBUTE_DIRECTORY And Res <= (FILE_ATTRIBUTE_DIRECTORY + FILE_ATTRIBUTE_HIDDEN + FILE_ATTRIBUTE_READONLY + FILE_ATTRIBUTE_SYSTEM) Then Res = Res - FILE_ATTRIBUTE_DIRECTORY: Atributos = Atributos & "+D "
 
    If Res >= FILE_ATTRIBUTE_SYSTEM Then Res = Res - FILE_ATTRIBUTE_SYSTEM: Atributos = Atributos & "+S"
   
       
    If Res >= FILE_ATTRIBUTE_HIDDEN Then Res = Res - FILE_ATTRIBUTE_HIDDEN: Atributos = Atributos & "+H "
   
   
    If Res >= FILE_ATTRIBUTE_READONLY Then Res = Res - FILE_ATTRIBUTE_READONLY: Atributos = Atributos & "+R "
   
    MsgBox Atributos


En línea
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.832


I'Love...!¡.


Ver Perfil WWW
Re: ¿como comprobar varios resultados en un solo valor? - GetFileAttributes
« Respuesta #2 en: 25 Agosto 2011, 03:05 »

.
Nada que ver...

Lee algo sobre Operaciones binarias... ademas le faltan muchos mas atributos aqui te dejo mi codigo.

Código
 
Option Explicit
 
Enum FILE_ATTRIBUTE
   [ReadOnly] = &H1
   Hidden = &H2
   System = &H4
   'not used = &H8
   DIRECTORY = &H10
   Archive = &H20
   Device = &H40
   Normal = &H80
   Temporaly = &H100
   SparseFile = &H200
   ReparsePoint = &H400
   Compressed = &H800
   Offline = &H1000
   NotContentIndexed = &H2000
   Encrypted = &H4000
   NoExits = &HFFFFFFFF
End Enum
 
Private Declare Function GetFileAttributes Lib "kernel32.dll" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
 
Private Sub Form_Load()
Dim sRet        As String
Dim lRes        As Long
Const RUTA As String = "c:\aaaa"
 
   lRes = GetFileAttributes(RUTA)
 
   If ((lRes And FILE_ATTRIBUTE.NoExits) = FILE_ATTRIBUTE.NoExits) Then
       sRet = "No Exits This File: " & RUTA
   Else
       If ((lRes And FILE_ATTRIBUTE.Normal) = FILE_ATTRIBUTE.Normal) Then sRet = sRet & "+N "
       If ((lRes And FILE_ATTRIBUTE.Archive) = FILE_ATTRIBUTE.Archive) Then sRet = sRet & "+A "
       If ((lRes And FILE_ATTRIBUTE.DIRECTORY) = FILE_ATTRIBUTE.DIRECTORY) Then sRet = sRet & "+D "
       If ((lRes And FILE_ATTRIBUTE.System) = FILE_ATTRIBUTE.System) Then sRet = sRet & "+S "
       If ((lRes And FILE_ATTRIBUTE.Hidden) = FILE_ATTRIBUTE.Hidden) Then sRet = sRet & "+H "
       If ((lRes And FILE_ATTRIBUTE.[ReadOnly]) = FILE_ATTRIBUTE.[ReadOnly]) Then sRet = sRet & "+R "
       If ((lRes And FILE_ATTRIBUTE.Temporaly) = FILE_ATTRIBUTE.Temporaly) Then sRet = sRet & "+Temporaly "
       If ((lRes And FILE_ATTRIBUTE.SparseFile) = FILE_ATTRIBUTE.SparseFile) Then sRet = sRet & "+SparseFile "
       If ((lRes And FILE_ATTRIBUTE.ReparsePoint) = FILE_ATTRIBUTE.ReparsePoint) Then sRet = sRet & "+ReparsePoint "
       If ((lRes And FILE_ATTRIBUTE.Compressed) = FILE_ATTRIBUTE.Compressed) Then sRet = sRet & "+Compressed "
       If ((lRes And FILE_ATTRIBUTE.Offline) = FILE_ATTRIBUTE.Offline) Then sRet = sRet & "+Offline "
       If ((lRes And FILE_ATTRIBUTE.NotContentIndexed) = FILE_ATTRIBUTE.NotContentIndexed) Then sRet = sRet & "+NotContentIndexed "
       If ((lRes And FILE_ATTRIBUTE.Encrypted) = FILE_ATTRIBUTE.Encrypted) Then sRet = sRet & "+Encripted "
   End If
 
   MsgBox sRet
 
End Sub
 
 

Dulces Lunas!¡.
« Última modificación: 25 Agosto 2011, 03:26 por BlackZeroX▓▓▒▒░░ » En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.832


I'Love...!¡.


Ver Perfil WWW
Re: ¿como comprobar varios resultados en un solo valor? - GetFileAttributes
« Respuesta #3 en: 25 Agosto 2011, 03:29 »

te dejo un enlace a un libro que seguro lo encuentras algo interesante...

http://books.google.com/books?id=ZDin4axsYoEC&pg=PA164&lpg=PA164&dq=FILE_ATTRIBUTE+%26h40&source=bl&ots=x539D8QqWX&sig=-8IXCtdv4bN13SuE-sD5MHYqt6o&hl=es&ei=jaJVTtSgK-yCsgLEnp26Bw&sa=X&oi=book_result&ct=result&resnum=4&ved=0CDkQ6AEwAw#v=onepage&q&f=false

Dulces Lunas!¡.
En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
AlxSpy

Desconectado Desconectado

Mensajes: 137


Ver Perfil
Re: ¿como comprobar varios resultados en un solo valor? - GetFileAttributes
« Respuesta #4 en: 27 Agosto 2011, 02:27 »

ve yo que pense que me faltaba solo el atributo temporary xP, veo que se reduce aun mas usando el and, leere eso de las operaciones binarias weno gracias.
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines