Como usar una API en Visual Basic.Net

Iniciado por MicroHack, 18 Febrero 2011, 22:13 PM

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

MicroHack

Hola,

estoy aprendiendo visual basic.net desde 0 y ya llevo 2 meses. He aprendido siguiendo un temario de un libro, por lo cual he empezado con los programas de consola y ahora estoy con los Windows Form (durante este largo camino he estudiado, las variables, tipos, funciones, sentencias For, While, If, etc...)

Ahora que estoy en la parte "divertida" con los Form me gustaria hacer algun pequeño programa usando las API de Windows, por ejemplo con la Shell32.DLL que alberga funciones para la modificacion del explorador de ventanas entre otras cosas.

El caso es que mi libro no habla sobre como usar API´s y tampoco he encontrado nada por la red, con lo que me hace falta entender como se usa una API dentro de un proyecto Visual Basic.Net

He copiado y pegado esta linea de un ejemplo que encontre por la red pero no se exactamente que hace y ni siquiera si es lo que necesito.

Declare Sub SetUserTile Lib "shell32.dll" (ByVal UserName As String, ByVal Whatever As Integer, ByVal PicPath As String)


Por favor alguien me puede pasar un tutorial que me explique como n00b que soy? O decirme solamente en este caso como hago para usar las funciones que contiene la Shell32.dll?
Hola cariño, pasa por favor, y cierra la puerta al entrar. No quiero que se oigan los disparos fuera.

[D4N93R]

Hola,

En este enlace podrás ver un listado de las funciones en Shell32.
http://www.geoffchappell.com/viewer.htm?doc=studies/windows/shell/shell32/api/index.htm


Y acá puedes ver como se hace el pinvoke.
http://www.pinvoke.net/default.aspx

Un saludo!

MicroHack

Gracias, con tu respuesta he aprendido que es un Pinvoke (basicamente llamar codigo no gestionado en un proyecto escrito con codigo manejado)

Pero no me queda claro como usarlo, no se la sintaxis ni si dicha API (Shell32.dll) me la tengo que descargar o viene incluida en las referencias de .Net (imagino que no porque si no bastaria con decir "Imports System.Windows.Shell32" o algo del estilo)

He hecho una busqueda en la carpeta /Windows y en una de las carpetas he encontrado esa dll, ¿es la misma que estoy buscando o no tiene nada que ver?
Hola cariño, pasa por favor, y cierra la puerta al entrar. No quiero que se oigan los disparos fuera.

seba123neo

Hola, te explico bien por arriba como para un chico de 5 años  ;D, primero que nada nunca vas a usar todas las apis que existen, como veras la shell32.dll tiene muchisimas, y en total de las otras librerias tenes algo de mas de 800 apis.

la dll digamos que es una libreria con funciones dentro, y vos lo que haces desde visual basic .net es declarar esa funcion y usarla.

para usar la api debes saber como funciona y los valores que puede tomar,o sea las constantes (que si no me equivoco existen mas de 100 mil), pero para eso esta la MSDN de microsoft que tiene la documentacion de todas las apis y con ejemplos, aparte si buscas el nombre de una api en internet te salen muchos ejemplos , siempre para saber como se usa.

una buena herramienta es el "Api Viewer" bajatelo e instalatelo, tiene ejemplos de casi todas las apis, los ejemplos estan en visual basic 6, pero para .net es casi lo mismo, es para que veas como se usan nada mas.

la "Shell32.dll" viene con el windows , asi que no tenes que descargar nada, es mas todas las apis que ves ya estan en el windows, el mismo windows usa constantemente esas apis para hacer su trabajo, obvio no estan programadas en .NET  ;D.

la carpeta de las dll esta en WINDOWS\SYSTEM32.

tambien es posible programarte tus propias dll con funciones dentro, para despues llamar las funciones como si fueran apis, pero eso ya es otro tema, primero aprende a usarlas.

aunque justamente el framework de .NET busca independizarse de las apis de windows.

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

MicroHack

#4
Gracias por tu respuesta seba123neo, entiendo lo que son las APIs (funciones almacenadas en bibliotecas DLL), es más, yo mismo en un ejercicio demandado por el libro creé una DLL para usarla dentro de otro proyecto, concretamente hacia uso de esa DLL para usar la clase y sus funciones que habia escrito previamente.

Pero todo eso lo supe hacer sin problemas puesto que el procedimiento era simplemente agregarla como referencia y usar la palabra reservada Imports y el espacio de nombres asignado.

En este caso es diferente, pasa algo extraño, he agregado por referencia la dll que encontre en la carpeta de Windows (pesa 12Mb) y al explorarla no vi casi ninguna de las funciones que salen en http://www.geoffchappell.com/viewer.htm?doc=studies/windows/shell/shell32/api/index.htm

A parte de ello es verdad, no conozco la funcion que necesito y me haria falta buscarla en la doc. En concreto lo que me hace falta son aquellas funciones que escriben los valores de la ventana de "propiedades del sistema" (procesador, memoria, tipo de sistema, etc)

Hola cariño, pasa por favor, y cierra la puerta al entrar. No quiero que se oigan los disparos fuera.

seba123neo

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

MicroHack

Hola cariño, pasa por favor, y cierra la puerta al entrar. No quiero que se oigan los disparos fuera.

[D4N93R]

Cita de: seba123neo en 19 Febrero 2011, 00:43 AM
...el mismo windows usa constantemente esas apis para hacer su trabajo, obvio no estan programadas en .NET  ;D.

De Windows Vista en adelante, hay varias cosas programadas en .Net, un ejemplo puede ser el Task Scheduler, me di cuenta de ese porque en Vista le dejaron el icono del Form por defecto  :xD

Volviendo al tema.

Quieres cambiar los valores que aparecen ahí? o quieres obtenerlos desde tu código?

Un saludo.

MicroHack

Cita de: [D4N93R] en 19 Febrero 2011, 13:44 PM

Quieres cambiar los valores que aparecen ahí? o quieres obtenerlos desde tu código?

Un saludo.

Quiero cambiarlos :)
Hola cariño, pasa por favor, y cierra la puerta al entrar. No quiero que se oigan los disparos fuera.

seba123neo

lo que pasa es que NO debes agregar como referencia la dll para usar las api's, una cosa es que vos programes una dll con funciones, ahi si la debes agregar, pero las de windows no, se llaman mediante las api's.

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