Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: SRVAM en 19 Agosto 2009, 15:46 pm



Título: ayuda con APIs
Publicado por: SRVAM en 19 Agosto 2009, 15:46 pm
bueno, como nunca he usado ninguna API, ya es hora de empezar, y he empezado usando una sencilla para conseguir informacion de las unidades de almacenamiento.

GetVolumeInformation

he mirado un ejemplo sobre como usarla, pero hay cosas que no entiendo bien y me gustaria que me lo aclaraseis por favor.

Código
  1. Private Declare Function GetVolumeInformation Lib "Kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String,
  2. ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long,
  3. lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long,
  4. lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String,
  5. ByVal nFileSystemNameSize As Long) As Long
  6.  
  7. Private Sub Command1_Click()
  8.  
  9. Dim unidad As String
  10. Dim serie As Long
  11. Dim sistemaArchivos As String
  12. Dim volumen As String
  13. Dim retorno As Long
  14.  
  15. volumen = String$(255, Chr$(0))
  16.  
  17. sistemaArchivos = String$(255, Chr$(0))
  18.  
  19. unidad = Drive1
  20.  
  21. unidad = Left(unidad, 2) & "\"
  22.  
  23. retorno = GetVolumeInformation(unidad, volumen, Len(volumen), serie, 0, 0, sistemaArchivos, Len(sistemaArchivos))
  24.  
  25. Label1.Caption = Trim(volumen)
  26. Label2.Caption = serie
  27. Label3.Caption = Trim(sistemaArchivos)
  28.  
  29. End Sub

-1º ->  por que en el ejemplo, a las variables volumen y sistemaArchivos se les asignan esos valores para luego pasarselos a la funcion?
-2º-> por que a la hora de pasar variables a la funcion algunas como volumen y sistemaArchivos se pasan, y ademas, tambien se pasa su longitud?

y bueno, esas pequeñas dudas solo con esta API, pero seguramente me iran surgiendo muchas dudas, porque a primera vista, parece complicado su uso debido a la cantidad de valores que hay que pasarles y demas.

pero bueno, a empollar se ha dicho.

saludos


Título: Re: ayuda con APIs
Publicado por: LeandroA en 19 Agosto 2009, 20:41 pm
Hola cuando trabajas con apis y estas modifican un parametro de tipo String o Bits tenes que redimencionar para crear un buffer donde estas apis volcaran la informaición.

en el ejemplo que pusite hay una cosa mal te explico

volumen = String$(255, Chr$(0))

esto crea un buffer con un tamaño de  255 con todos Bits nulos

y despues al final utiliza la funcion

Label1.Caption = Trim(volumen)

Trim es solo para los espacios por lo que en este caso tu usaste Bits nulos  entonces no lo eliminara el exedente.

ahora si ubieras puesto


volumen = String$(255, Space(1))

y luego

Label1.Caption = Trim(volumen)

entoses si porque estaria quitando los ultimos espacios, pero esto puede traer una complejidad ya que suponte que  volumen termina con espacios estos se estarian perdiendo entonces es mejor utilizar bits nulos

y para quitar los bits nulos se utiliza  esta forma

volumen= Left$(volumen, InStr(1, volumen, Chr$(0)) - 1)

osea la izquierda hasta donde se encuentre el primer bits nulo


seguramente con la explicación que te di no querras ver mas una api  ;D

Saludos





Título: Re: ayuda con APIs
Publicado por: SRVAM en 19 Agosto 2009, 22:23 pm
jajaj pues n oes asi leando, si que quiero ver mas APIs jajaja

con lo que dijiste si lo entendi, ahora se el por que de crear una cadena de texto "vacia"

pero es complicado esto de las APIs, al menos al principio, todo es acostumbrarse.

pero he visto ejemplos de APIs como para hacer un programa de ftp, y la wininet para poder usarla es un pedazo de modulo que no veas xDD no entendi ni la mitad xDD

a ver si consigo ir pillando bien como va estoy viendo que adios a mi ftp en condiciones xD


Título: Re: ayuda con APIs
Publicado por: seba123neo en 20 Agosto 2009, 01:08 am
hombre, recien empezas a ver api's y te fuiste ya a ver el codigo de un cliente FTP ?...creo que ahi esta el error de porque no lo entendes...tenes que empezar a ver la teoria primero...las api's mas comunes y mas faciles...despues ahi vas a entender las complejas, mira ejemplos y fijate que es lo que hacen y como se usan. por decirte algo empeza viendo la api de Beep()  :P

saludos.


Título: Re: ayuda con APIs
Publicado por: SRVAM en 20 Agosto 2009, 01:20 am
seba he visto las de GetVolumeInformation  y exitwindowsEX

mire las de ftp porque tu me lo dijiste en otro mensae que puse, pero como eran muy complicadas decidi empezar por el principio, y aun asi teni algunas dudas.

y es que cuando son pocas variables las que se manejan no es complicado, pero cuando son muchas como en el API wininet, ya parece muy complicado saber como manejarlo todo.

valores, funciones, eventos... porque parece que un API no es como un control que tu pongas y puedas programar eventos no??

asi que ahi es donde me lio, no se exactamente como empezar


Título: Re: ayuda con APIs
Publicado por: MCKSys Argentina en 20 Agosto 2009, 01:36 am
Hola SRVAM.

Lo que te propongo es hacer algun tutorial sobre programación en Win32. No es necesario que sea de VB. Solamente te ayudaria a ver como trabaja Windows internamente.

Una vez que entiendas como trabaja el SO, vas a poder hacer cualquier cosa en él, en el lenguaje que sea...

Saludos!



Título: Re: ayuda con APIs
Publicado por: SRVAM en 20 Agosto 2009, 03:09 am
gracias MCKSys Argentina  la verdad es que no lo habia pensado, buscare algun tutorial y ya cuando empiece a programar ire diciendo que tal me va.

gracias a todos


Título: Re: ayuda con APIs
Publicado por: Dessa en 20 Agosto 2009, 12:25 pm
Te dejo un Link.

http://winapi.conclase.net/curso/index.php?tab=Funciones (http://winapi.conclase.net/curso/index.php?tab=Funciones)

S2



Título: Re: ayuda con APIs
Publicado por: Fabricio en 20 Agosto 2009, 17:58 pm
Hola SRVAM podes instalarte el API guide es muy util tiene ejemplos de un monton de apis  te explica para que se usa el api y tiene ejemplos de codigo

te dejo un link para que lo descargues
http://www.recursosvisualbasic.com.ar/htm/ocx-componentes-activex-dll/28-visor-de-funciones-api-viewer.htm#2

saludos


Título: Re: ayuda con APIs
Publicado por: SRVAM en 20 Agosto 2009, 23:14 pm
gracias a todos por los enlaces, ya estoy en ello leyendo ejemplos y el tutorial sobre programacion en windows.

gracias por la ayuda.

saludos


Título: Re: ayuda con APIs
Publicado por: SRVAM en 21 Agosto 2009, 02:44 am
bueno ya he leido cosas sobre como se declaran, los valores que hay que pasarle y demas.

y tengo algunas dudas que no termino de aclarar con los ejemplos. (sera que aqui en españa son las 3 de la madrugada y tengo sueño xD)

pero si yo en una determianda parte de un programa quiero realizar una accion de alguna API, como deberia hacerle la llamada si yo tengo la API declarada en un modulo??

es como llamar a cualquier otra funcion a la que yo le paso los parametros que necesita??

y otra cosa, he visto que muchas APIs trabajan con constantes. esas constantes solamente con declararlas en el modulo donde se encuentra la API va bien no?? o tambien hay que pasarselos cuando se quiera realizar una llamada a la funcion??

espero haberme explicado bien en mis preguntas... si no es asi decidmelo y me intento explicar mejor.

muchas gracias, un saludo


Título: Re: ayuda con APIs
Publicado por: seba123neo en 21 Agosto 2009, 02:57 am
las apis se declaran una sola vez, ya sea en un modulo publicamente o a nivel privado en un formulario, las constantes se declaran en cualquier lado, ya que no son mas que valores...es mas ni hace falta declararlas a veces, si le pones el valor correcto ni hace falta declararlas, pero se lo hace porque queda mejor en el codigo.


Título: Re: ayuda con APIs
Publicado por: SRVAM en 21 Agosto 2009, 03:11 am
ah de acuerdo, entonces una vez declarada la API no hace falta llamarlas. simplemente ya realizan su funcion. yo pensaba que habia que hacerles llamadas para usarlas.

ya si que lo voy entendiendo. muchas gracias seba123neo por tu ayuda de verdad.


Título: Re: ayuda con APIs
Publicado por: seba123neo en 21 Agosto 2009, 03:44 am
no, haber, las declaras una sola vez y las llamas las veces que quieras para usarlas...sino seria imposible...para usarla hay que llamarla obviemente.


Título: Re: ayuda con APIs
Publicado por: SRVAM en 21 Agosto 2009, 03:48 am
de acuerdo de acuerdo, como no me respondiste a esa parte pense que solo con declararlas ya ellas mismas entraban en accion cuadno saltaba un evento en el que tuviesen que intervenir.

pero ahora que lo pienso ha sido una tonteria pensar eso, sorry por mi insensatez