ayuda con APIs

Iniciado por SRVAM, 19 Agosto 2009, 15:46 PM

0 Miembros y 1 Visitante están viendo este tema.

SRVAM

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 (vb) [Seleccionar]
Private Declare Function GetVolumeInformation Lib "Kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String,
ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long,
lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long,
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String,
ByVal nFileSystemNameSize As Long) As Long

Private Sub Command1_Click()

Dim unidad As String
Dim serie As Long
Dim sistemaArchivos As String
Dim volumen As String
Dim retorno As Long

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

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

unidad = Drive1

unidad = Left(unidad, 2) & "\"

retorno = GetVolumeInformation(unidad, volumen, Len(volumen), serie, 0, 0, sistemaArchivos, Len(sistemaArchivos))

Label1.Caption = Trim(volumen)
Label2.Caption = serie
Label3.Caption = Trim(sistemaArchivos)

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
C# Programmer

-Estudiante MCTS .NET Framework 3.5-

LeandroA

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




SRVAM

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
C# Programmer

-Estudiante MCTS .NET Framework 3.5-

seba123neo

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.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

SRVAM

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
C# Programmer

-Estudiante MCTS .NET Framework 3.5-

MCKSys Argentina

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!

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


SRVAM

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
C# Programmer

-Estudiante MCTS .NET Framework 3.5-

Dessa

Adrian Desanti

Fabricio

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

SRVAM

gracias a todos por los enlaces, ya estoy en ello leyendo ejemplos y el tutorial sobre programacion en windows.

gracias por la ayuda.

saludos
C# Programmer

-Estudiante MCTS .NET Framework 3.5-