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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  No me lee archivo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No me lee archivo  (Leído 2,102 veces)
fary


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
No me lee archivo
« en: 22 Abril 2010, 21:15 pm »

Hola, tengo el siguiente problema, estoy intentando leer un mediante api pero nose porqeu demonios no me coje los datos, este es el code:

Código
  1. Option Explicit
  2.  
  3. Public Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
  4. Public Declare Function ReadFile Lib "kernel32.dll" (ByVal hFile As Long, ByRef lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, ByRef lpNumberOfBytesRead As Long, ByRef lpOverlapped As Any) As Long
  5. Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  6.  
  7.  
  8. Public Const GENERIC_READ = &H80000000
  9. Public Const FILE_SHARE_READ = &H1
  10. Public Const FILE_ATTRIBUTE_NORMAL = &H80
  11. Public Const OPEN_EXISTING As Long = 3
  12.  
  13. Public Type SECURITY_ATTRIBUTES
  14.    nLength As Long
  15.    lpSecurityDescriptor As Long
  16.    bInheritHandle As Long
  17. End Type
  18. Public Type OVERLAPPED
  19.    ternal As Long
  20.    ternalHigh As Long
  21.    offset As Long
  22.    OffsetHigh As Long
  23.    hEvent As Long
  24. End Type
  25.  
  26.  
  27. Public Function Archivo(ruta As String) As Boolean
  28.    Dim abrirarchivo As Long
  29.    Dim sa As SECURITY_ATTRIBUTES
  30.    Dim leerarchivo As Long
  31.    Dim over As OVERLAPPED
  32.    Dim buffer As String
  33.    Dim nada As Long
  34.    Dim bytesleidos As Long
  35.    abrirarchivo = CreateFile(ruta, GENERIC_READ, FILE_SHARE_READ, sa, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
  36.    buffer = Space(FileLen(ruta))
  37.    leerarchivo = ReadFile(abrirarchivo, buffer, nada, bytesleidos, over)
  38.    Call CloseHandle(abrirarchivo)
  39.    MsgBox buffer
  40. End Function
  41.  
  42. Sub Main()
  43.    Call Archivo("c:\feo.txt")
  44. End Sub

espero vuestra ayuda.

salu2!


En línea

Un byte a la izquierda.
Dr [F]

Desconectado Desconectado

Mensajes: 50


[H] Risk T [S] --> Dr [F]


Ver Perfil WWW
Re: No me lee archivo
« Respuesta #1 en: 22 Abril 2010, 21:25 pm »

drinky.. para que complicarte la vida usando API .. ?'

acuerdate esto:

Mientras mas lineas tiene el programa mas pesa y mas bugs puede tner  :-\

Bye !


En línea

"Una vulnerabilidad es tan limitada como tu quieres que lo sea"

[H] Risk T --> Dr [F]
fary


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: No me lee archivo
« Respuesta #2 en: 22 Abril 2010, 21:28 pm »

drinky.. para que complicarte la vida usando API .. ?'

acuerdate esto:

Mientras mas lineas tiene el programa mas pesa y mas bugs puede tner  :-\

Bye !

hay que saber mas  opciones... si siempre tienes una unica salida habra veces que no te servira.

salu2!
En línea

Un byte a la izquierda.
PeterPunk77

Desconectado Desconectado

Mensajes: 77



Ver Perfil
Re: No me lee archivo
« Respuesta #3 en: 23 Abril 2010, 09:56 am »

En la llamada a la API ReadFile hay un par de errores:
- El buffer se lo tienes que pasar por valor.
- No le indicas el número de bytes que tiene que leer (tu variable nada, que no está inicializada)

Debería ser así:
Código
  1. leerarchivo = ReadFile(abrirarchivo, ByVal buffer, FileLen(ruta), bytesleidos, over)
o mejor aún:
Código
  1. Dim BytesALeer as Long
  2.  BytesALeer = FileLen(ruta)
  3.  buffer = Space(BytesALeer)
  4.  leerarchivo = ReadFile(abrirarchivo, ByVal buffer, BytesALeer, bytesleidos, ByVal over)

Saludos.
En línea

fary


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: No me lee archivo
« Respuesta #4 en: 23 Abril 2010, 14:50 pm »

Muchas gracias... me falto ese byval que fallo xD!

salu2!
En línea

Un byte a la izquierda.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines