API EN VISUAL BASIC.NET
[/b]
Todos sabemos que las API constituyen una parte importante de la programación , ya que nos permite ejecutar ordenes del sistema .
En Visual Basic . Net , Microsoft nos esta facilitando mucho el trabajo porque ya no es necesario tantas declaraciones largas y complejas que nos cuesta trabajo aprenderlas y usarlas .
Ahora las declaraciones son muy cortas y están señaladas allí, por lo que nos podemos dar cuenta de todas las funciones que existen y utilizando la logica podemos usarlas.
Para usarlas las podemos importar para solamente usar la función o hacer toda la declaración en una sola llamada.
Para importarlas basta con poner la sentencia imports y <Declaración> antes de la clase del proyecto o del sub main ().
Para usar las declaraciones nos iniciamos con system, que nos permite hacer llamadas al sistema , después le continuamos con lo que vayamos a usar y así sucesivamente con punto un ejemplo seria :
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
System.DateTime.Now()
End Sub
End Class
Para importar desde el principio nos quedaria asi:
Imports System.DateTime
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
Vemos con diferencia que no esta la palabra .now pues bien esto es porque se generaliza para luego cuando las usemos con métodos las podamos especificar.
Ya terminándola se usar completamente podría ser así:
Imports System.DateTime
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MsgBox(DateTime.Now)
End Sub
End Class
Y como resultado obtenemos la fecha y hora local.
La cosa se complicara un poco al utilizarlas al llamarlas como vemos esta muy fácil lo que no era en la versión 6 y anteriores.
Recordemos que las llamadas a las API también se pueden hacer en modo de consola .
Otro ejemplo en modo de consola seria :
Imports System.Security
Module Module1
Sub Main()
Console.WriteLine("Nombre de usuario:" & Principal.WindowsIdentity.GetCurrent.Name)
Console.ReadKey()
End Sub
End Module
Con lo que nos devuelve el nombre del usuario de Windows.
O bien sin importarlos desde el principio seria:
Module Module1
Sub Main()
Console.WriteLine("Nombre De Usuario" & System.Security.Principal.WindowsIdentity.GetCurrent.Name)
Console.ReadKey()
End Sub
End Module
Bueno al fin Microsoft pensó en algo que nos seria útil.
Este ejemplo nos sirve para mover el cursor determinadas coordenadas.
Usa poínt. Porque es el punto donde vamos a mover el cursor , me costo trabajo sacar este método pero si practicas ya veras que no es tan complicado
Imports System.Windows.Forms.Cursor
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Cursor.Position = New Point(Cursor.Position.X - 200, Cursor.Position.Y - 200)
End Sub
End Class
Aqui un ejemplo de como saber la posicion del cursor en windows.
Imports system.Windows.Forms.Cursor
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim PosX As Integer, PosY As Integer
PosX = Current.Position.X
PosY = Current.Position.Y
MsgBox(PosX & "-" & PosY)
End Sub
End Class
El porque usamos current ? , pues bien es para obtener la actual y almacenamos en PosX la posicion de la coordenada X y Y para luego mostrarlas en un msgbox , este fue el metodo que a mi se me ocurrio , pero cada quien tiene diferentes tecnicas y puede crear otras formas , no importa la forma en que se obtenga lo que importa es que de el mismo resultado.
Ahora gracias a este metodo implementado la programación en Visual Basic sera menos limitante y mas rapido para hacer cosas complicadas , ustedes pueden compar un codigo en Visual Basic anteriormente para obtener estos resultados y ver este en .Net y darse cuenta que nos haorramos unas 10 lineas que no son nada facil de memorizar.
Para obtener informacion sobre que hace cada función , le tenemos que dar click al boton que dice object browser, donde te explican cada función, ese boton se encuentra en la barra de tareas en la parte superior a lado izquierdo del martillo y de la llave que es para obtener el toolbox (Esto es en Visual Studio de microsoft).
A continuación expongo una guia de MSDN para llamar a las apis que usa varios metodos , y recordemos que este lenguaje apenas se esta dando a luz y empiezan a aumentar los recursos en internet , asi que busquemos e investiguemos sobre esto para poder colaborar en cosas que todavía no son muy conocidas.
PD:El autocompletado de las funciones solamente las probe en Visual Studio , no se si otros IDES autocompleten.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TUTORIAL:llamar a las Api de windows
[/b]
Las API de Windows son bibliotecas de vínculos dinámicos (DLL) que forman parte del sistema operativo Windows. Se utilizan para realizar tareas cuando resulta difícil escribir procedimientos equivalentes. Por ejemplo, Windows proporciona una función denominada FlashWindowEx que permite que la barra de título de una aplicación alterne entre un sombreado claro y otro oscuro.
La ventaja de utilizar las API de Windows en el código es que pueden ahorrar tiempo porque contienen numerosas funciones útiles ya escritas y listas para utilizar. La desventaja es que puede resultar difícil trabajar con las API de Windows y pueden ser implacables cuando las cosas van mal.
Las bibliotecas de vínculos dinámicos (DLL) de Windows representan una categoría especial de interoperabilidad. Las API de Windows API no utilizan código administrado, no tiene bibliotecas de tipos incorporadas y utilizan tipos de datos que son diferentes a los utilizados con Visual Studio .NET. Debido a estas diferencias y a que las API de Windows no son objetos COM, la interoperabilidad con las API de Windows y la plataforma .NET se lleva a cabo utilizando invocación de la plataforma, o PInvoke. Invocación de la plataforma es un servicio que permite al código administrado llamar a funciones no administradas implementadas en archivos DLL. Para obtener más información, vea
Utilizar funciones de DLL no administradas.
Puede utilizar PInvoke en Visual Basic .NET mediante la instrucción Declare o aplicando el atributo DllImport a un procedimiento vacío.
Las llamadas de API de Windows eran una parte importante de la programación con Visual Basic en el pasado, pero rara vez son necesarias con Visual Basic .NET. Siempre que sea posible, debe utilizar código administrado de .NET Framework para realizar tareas en lugar de llamadas a API de Windows. Este tutorial proporciona información para aquellas situaciones en las que es inevitable el uso de API de Windows.
Llamadas a API utilizando DeclareEl modo más común de llamar a API de Windows es a través de la instrucción Declare.
Para declarar un procedimiento de DLL
1. Determine el nombre de la función que desea llamar y sus argumentos, tipos de argumento y valor devuelto, así como el nombre y la ubicación de la DLL que la contiene.
Nota Para obtener información completa sobre las API de Windows, vea la documentación de la API de Windows incluida en el SDK de la plataforma. Para obtener más información sobre las constantes que utilizan las API de Windows, vea los archivos de encabezado, como Windows.h, que se incluyen en el SDK de la plataforma.
2. En el menú Archivo, haga clic en Nuevo para abrir un nuevo proyecto de aplicación para Windows y, a continuación, haga clic en Proyecto. Aparecerá el cuadro de diálogo Nuevo proyecto.
3. Seleccione Aplicación para Windows en al lista de plantillas de proyecto de Visual Basic. Aparecerá el proyecto nuevo.
4. Agregue la siguiente función Declare a la sección de declaración del formulario de inicio del proyecto o la sección de declaración de la clase o módulo donde desea utilizar la DLL:
Declare Auto Function MBox Lib "user32.dll" _
Alias "MessageBox" (ByVal hWnd As Integer, _
ByVal txt As String, ByVal caption As String, _
ByVal Typ As Integer) As Integer
Partes de la instrucción DeclareLa instrucción Declare incluye los siguientes elementos.
Modificador AutoEl modificador Auto indica al motor de tiempo de ejecución que convierta la cadena basada en el nombre del método de acuerdo con las reglas de Common Language Runtime (o el alias, si se ha especificado)
Palabras clave Lib y AliasEl nombre que sigue a la palabra clave Function es el nombre que utiliza el programa para tener acceso a la función importada. Puede ser igual que el nombre real de la función a la que llama; o bien, puede utilizar cualquier nombre de procedimiento válido y utilizar después la palabra clave Alias para especificar el nombre real de la función a la que llama.
Especifique la palabra Lib seguida por el nombre y la ubicación de la DLL que contiene la función a la que llama. No es necesario que especifique la ruta de acceso de los archivos ubicados en los directorios del sistema de Windows.
Utilice la palabra clave Alias si el nombre de la función a la que llama no es un nombre de procedimiento de Visual Basic válido, o crea algún conflicto con el nombre de otros elementos de la aplicación. Alias indica el nombre verdadero de la función a la que se llama.
Declaraciones de argumentos y tipos de datosDeclare los argumentos y sus tipos de datos. Esta parte puede resultar desafiante porque los tipos de datos que utiliza Windows no se corresponden con los tipos de datos de Visual Studio. Visual Basic realiza gran parte del trabajo convirtiendo los argumentos en tipos de datos compatibles, un proceso denominado cálculo de referencias. Puede controlar de manera explícita cómo se calculan las referencias de los argumentos utilizando el atributo MarshalAs definido en el espacio de nombres System.Runtime.InteropServices.
Nota Las versiones anteriores de Visual Basic permitían declarar parámetros As Any, lo que significa que se podían utilizar datos de cualquier tipo. Visual Basic .NET requiere que se utilice un tipo de datos específico para todas las instrucciones declare.
Constantes de las API de WindowsAlgunos argumentos son combinaciones de constantes. Por ejemplo, la API MessageBox que se muestra en este tutorial acepta un argumento Integer denominado Typ que controla cómo se muestra el cuadro de mensaje. Para determinar el valor numérico de estas constantes, puede examinar las instrucciones #define del archivo WinUser.h. Los valores numéricos suelen mostrarse en hexadecimal, así que deberá utilizar una calculara para sumarlos y convertirlos al sistema decimal. Por ejemplo, si desea combinar las constantes del estilo de exclamación MB_ICONEXCLAMATION 0x00000030 y el estilo sí/no MB_YESNO 0x00000004, puede sumar los números y obtener el resultado de 0x00000034, o 52 decimal. Aunque puede utilizar el resultado decimal directamente, es mejor declarar estos valores como constantes en la aplicación y combinarlos utilizando el operador Or.
Para declarar constantes para las llamadas a API de Windows1º# Consulte la documentación de la función de Windows a la que va a llamar y determine el nombre de las constantes que utiliza, así como el nombre del archivo .h que contiene los valores numéricos para estas constantes.
2º# Utilice un editor de texto, como el Bloc de notas, para ver el contenido del archivo .h y busque los valores asociados con las constantes que está utilizando. Por ejemplo, la API MessageBox utiliza la constante MB_ICONQUESTION para mostrar un signo de interrogación en el cuadro de mensaje. La definición para MB_ICONQUESTION está en WinUser.h y aparece como sigue:
define MB_ICONQUESTION 0x00000020L
Agregue instrucciones Const equivalentes a la sección de declaraciones de la clase o módulo para que estas constantes estén disponibles para la aplicación. Por ejemplo:
Const MB_ICONQUESTION = &H20L
Const MB_YESNO = &H4
Const IDYES = 6
Const IDNO = 7
Para llamar al procedimiento de DLL# Agregue un botón denominado Button1 al formulario de inicio del proyecto y haga doble clic en él para ver su código. Aparecerá el controlador de eventos del botón.
# Agregue código al controlador de eventos Click para el botón que ha agregado para llamar al procedimiento, y proporcione los argumentos correspondientes:
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click
Dim RetVal As Integer ' Stores the return value.
RetVal = MBox(0, "Declare DLL Test", "Windows API MessageBox", _
MB_ICONQUESTION Or MB_YESNO)
' Check the return value.
If RetVal = IDYES Then
MsgBox("You chose Yes")
Else
MsgBox("You chose No")
End If
End Sub
Presione F5 para ejecutar el proyecto. El cuadro de mensaje aparecerá con dos botones de respuesta Yes y No. Haga clic en alguno de ellos.