Los Foros de ASPTutor.com
Home | Perfil | Registrarse | Temas Activos | Miembros | Buscar | FAQ
Usuario:
Password:
 Todos los Foros
 .NET
 Llamadas a la API de Windows
 Foro Bloqueado  Tema Bloqueado


Autor Temas
m0j0
Junior Member

Espa�a
209 Posts
Mensajes - 22 Aug 2003 :  09:50:54  Ver Perfil  Enviar Email
Hola,

Trato de aprender cómo utilizar las llamadas API en Visual Basic .NET. He leído alguna documentación al respecto, pero sigo teniendo alguna duda.

Os expongo un poco el contexto y al final os formulo mi pregunta.

1. Llamadas a la API usando Declare
2. Llamadas a la API usando DllImport

------------------------
1. Llamada API usando Declare
------------------------
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

------------------------
1. Llamada API usando DllImport
------------------------
<DllImport("user32.dll", EntryPoint:="MessageBox")> _
Public Shared Function DLLImportMBox(ByVal hWnd As Integer, _
ByVal txt As String, ByVal caption As String, _
ByVal Typ As Integer) As Integer
End Function

En un formulario tengo 2 botones. Button1 muestra un cuadro de diálogo usando una llamada a la API con la sentencia Declare, y Button2 hace algo similar pero utilizando la sentencia DllImport.

------------------------
Button1
------------------------
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 = API.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

------------------------
Button2
------------------------
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim RetVal As Integer
RetVal = API.DLLImportMBox(0, "Declare DLL Test", "Windows API MessageBox", _
MB_ICONQUESTION Or MB_YESNO)
If RetVal = IDYES Then
MsgBox("You chose Yes")
Else
MsgBox("You chose No")
End If
End Sub

Ambos botones muestran un MessageBox con la opción YES/NO. Si elijo YES muestra otro cuadro de diálogo con el texto: "You chose YES", si elijo NO, muestra otro cuadro de diálogo con el texto: "You chose NO".

Estoy tratanto de diseñar mi propia clase para gestionar la comunicación con el puerto serie, y para eso debo utilizar la API de Windows. Mid preguntad son:

¿Cuáles son las ventajas y desventajas de utilizar Declare o DllImport para hacer llamadas a la API de Windows?

En mi caso, ¿qué es lo que más me conviene?

Muchas gracias por vuestro tiempo.

Editado por - m0j0 on 24 Aug 2003 01:26:34

m0j0
Junior Member

Espa�a
209 Posts
Posted - 28 Aug 2003 :  08:38:24  Ver perfil  Enviar e-mail
Bueno, este mensaje ya lleva aquí unos cuantos días olvidado. Creo que he encontrado la diferencia principal entre DllImport y Declare, así que voy a contestar mi propio mensaje para que nos sirva un poco a todos:

La principal diferencia es que la sentencia Declare se utiliza exclusivamente en Visual Basic .NET, mientras que DllImport puede utilizarse tanto en C# como en Visual Basic .NET. Ambas son muy similares, pero DllImport deja tener más control sobre la llamada, como por ejemplo SetLastError=Off

Un saludo a todos.

-m0j0-Inicio Pagina

   
 Foro Bloqueado  Tema Bloqueado
Ir a:
Los Foros de ASPTutor.com Los Foros de ASPTutor.com
Ir al principio de la Página

 Imprimir Tema
 

Descargas de manuales¦ Ejemplos de código ¦ Artículos mas visitados ¦ Envía tu articulo ¦ Foros ¦
  Libro de visitas ¦Crea un enlace con ASPTutor 
 

    © 2001-Hasta hoy  Pedro Rufo Martín  contactar