Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Ultra-Xandre en 11 Mayo 2008, 10:53 am



Título: Duda con las API
Publicado por: Ultra-Xandre en 11 Mayo 2008, 10:53 am
Hola, vereis, tengo un problema con las API. Os cuento.
Estoy iniciándome en las API y me leí un tutorial y ponen como ejemplo esta API:
Private Declare Function ExitWindowsEx Lib "User32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Ya sé que lo de ExitWindowsEx y lo de User32 va a cambiar, bien, pero, (ByVal uFlags As Long, ByVal dwReserved As Long) As Long ¿va a cambiar? Otra cosa. En Lib, user32.dll o user32, ¿qué se pone?

Y por último, me pusieron este ejemplo:
 
'Declaración de la función Api
Private Declare Function ExitWindowsEx Lib "User32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
'Constantes para pasarle a la función
Const cerrar = 1
Const reiniciar = 2

'Código del Botón
Private Sub Command1_Click()
'Variable para retornar un valor e indicarnos si handubo bien o falló la llamada
Dim retorno As Long


'Dependiendo el Option seleccionado reiniciamos o apagamos
If Option1 Then retorno = ExitWindowsEx(reiniciar, 0)
If Option2 Then retorno = ExitWindowsEx(cerrar, 0)

End Sub

La duda es If Option1 Then retorno = ExitWindowsEx(reiniciar, 0)
If Option2 Then retorno = ExitWindowsEx(cerrar, 0)
¿Por qué pone Reiniciar, 0?


Título: Re: Duda con las API
Publicado por: seba123neo en 11 Mayo 2008, 11:14 am
Hola,no te entendi nada de lo primero,paro supongo que preguntas si lo podes cambiar,no se puede cambiar las apis ya traen esos parametros y variables,no podes agregarles variables..fijate en el api-viewer ahi estan casi todas las api's y constantes...pone reiniciar 0 porque son los valores que se le pasan a la api esa,reiniciar vale 0 y cerrar 1,dependiendo el valor reinicia o apaga...

saludos.


Título: Re: Duda con las API
Publicado por: Ultra-Xandre en 11 Mayo 2008, 11:17 am
¿Y eses valores ya viene dados por defecto y se los tengo que dar yo?

Digo si esto:  (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

¿Se puede cambiar o va a ser siempre así?


Título: Re: Duda con las API
Publicado por: seba123neo en 11 Mayo 2008, 11:22 am
ya vienen asi,no tenes que tocar eso...por eso te digo fijate en el api viewer ahi estan la lista de 800 apis aproximadamente y 100000 constantes,ya vienen dadas y armadas,lo unico que tenes que hacer vos es copiarlas y usarlas...


Título: Re: Duda con las API
Publicado por: Ultra-Xandre en 11 Mayo 2008, 11:24 am
Ok. ¿Y lo de ByVal... todo eso As long... ¿no se cambia nunca?


Título: Re: Duda con las API
Publicado por: seba123neo en 11 Mayo 2008, 11:25 am
no. :D


Título: Re: Duda con las API
Publicado por: Ultra-Xandre en 11 Mayo 2008, 11:26 am
Ah ok. Muchas gracias.


Título: Re: Duda con las API
Publicado por: Ultra-Xandre en 11 Mayo 2008, 11:48 am
Sigo teniendo una duda que no entendíbien:
Private Declare Function ExitWindowsEx Lib "User32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
'Constantes para pasarle a la función
Const cerrar = 1
Const reiniciar = 2

¿Por qué Cerrar = 1 Reiniciar = 2?
¿No le puedo cambiar el valor? ¿Es que ese valor ya viene dado por Windows?


Título: Re: Duda con las API
Publicado por: SKL (orignal) en 11 Mayo 2008, 12:00 pm
no,  no se puede alterar ni las apis ni las constantes, porque de lo contrario tira un error...

asi que tenes que usarlas como estan ahora... a una api no le podes agregar una variable mas...

y las constantes no le podes alterar el numero, si el nombre.

sl2


Título: Re: Duda con las API
Publicado por: Ultra-Xandre en 11 Mayo 2008, 12:06 pm
Ajam, ok. Otra cosa. ¿Cada API tiene sus variables? ¿Vienen dadas con el API Viewer o API Guide?


Título: Re: Duda con las API
Publicado por: seba123neo en 11 Mayo 2008, 12:06 pm
claro ya viene dado,estan programadas asi,si le llegas a poner un 7 en vez de los valores reales que acepta,te va a tirar error o no te va a funcionar...los nombres de las constantes si se pueden cambiar,por ejemplo en vez de poner:

Código:
Const cerrar = 1

podes poner:

Código:
Const estoyaburrido= 1

lo que vale aca es el valor de la constante no el nombre...


Título: Re: Duda con las API
Publicado por: Ultra-Xandre en 11 Mayo 2008, 12:09 pm
Amm ok. Muchas gracias Neo.
Espero que no os molesten mis preguntas, es que estoy empezando con las API y pues no sé mucho. :)


Título: Re: Duda con las API
Publicado por: seba123neo en 11 Mayo 2008, 12:10 pm
no todas las api's necesitan constantes,hay api's que tambien necesitan lo que se llama tipos(Types),que es una estructura de datos definidos que tambien las podes ver con el api-viewer...


Título: Re: Duda con las API
Publicado por: Ultra-Xandre en 11 Mayo 2008, 12:11 pm
Ajam, ok. Gracias por la explicación.


Título: Re: Duda con las API
Publicado por: Ultra-Xandre en 11 Mayo 2008, 14:30 pm
OMG Neo tío no saber que lo de uFlags y tal se cambia... mira esto:

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

¿Y dices que no cambia? En fin....


Título: Re: Duda con las API
Publicado por: seba123neo en 11 Mayo 2008, 21:39 pm
jaja entendiste mal vos,no cambia pero "para esa api" ,cada api tiene sus parametros distintos,sino seria todo igual :P,cada api tiene sus parametros ,yo dije qeu esa api no cambia,no se si me entendes  :P


Título: Re: Duda con las API
Publicado por: Ultra-Xandre en 11 Mayo 2008, 22:25 pm
Ah si si, entiendo. .) ¿Pero tú por ejemplo te sabes los parametros de las API o los tienes que mirar siempre?


Título: Re: Duda con las API
Publicado por: seba123neo en 12 Mayo 2008, 05:36 am
se aprende con la practica :P,las api's mas conoci0das yo ya se que parametros les tengo que pasar,te vas acostumbrando,pero cuando no sabes como funciona una api ,solo tenes que buscar informacon sobre esa api y fijarte que parametros hay que pasarle,para eso esta la ayuda on-line de visual baisc que provee microsoft se llama MSDN,ahi encontras todo lo de visual basic,buscate una api,por ejemplo si qeuiero saber qeu parametros hay qeu pasarle a la api llamada SendMessage solo la buscas en la MSDN:

SendMessage Function (http://msdn.microsoft.com/en-us/library/ms644950.aspx)

ahi esta la ayuda sobre esa api...podes buscar cualquiera...y te recomiendo una web llamada AllApi que es una recoleccion de todas 940 funciones apis de windows con ejemplos y todo para que entiendas su mecanismo de uso...mirala que ahi tenes todo...

AllApi (http://allapi.mentalis.org/apilist/apilist.php)

y otra muy buena se llama win api con clase:

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

ahi tenes todo,y hasta tenes el uso de las constantes y ejemplos de uso...

saludos.






Título: Re: Duda con las API
Publicado por: Ultra-Xandre en 12 Mayo 2008, 14:57 pm
Ajam, ok. Pero todavía no entiendo nada de API. :S No entiendo que es eso de los parámetros ni como se usan ni nada. :(


Título: Re: Duda con las API
Publicado por: Ch3ck en 12 Mayo 2008, 22:42 pm
Yo tengo otra pregunta acerca de esto y que siempre me pone en lios con este tema... algunas Apis traen que ByVal o Param, en algunas Apis, que traen esto hay que añadir datos cualesquiera a estas variables, en otras ser reciven datos, o en otras hay que añadir datos predeterminados como explicaron antes, como puedo hacer para poder saber como funciona ese parametro (de que manera), pues no tengo el MSDN ni acceso a internet en la pc que uso para programar....

Saludos...  (espero me allan entendido)


Título: Re: Duda con las API
Publicado por: Ultra-Xandre en 12 Mayo 2008, 22:50 pm
Descárgate API Guide o API Viewer