Bienvenido(a), Visitante. Favor de ingresar o registrarse.

Ingresar con nombre de usuario, contraseña y duración de la sesión

Foros del Club

Páginas: [1]   Ir Abajo
  Enviar tema  |  Imprimir  
Autor Tema: La API de Windows (Introducción)  (Leído 3062 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Ladri
Savant
*******

Prestigio: 4
Desconectado Desconectado

Sexo: Masculino
Mensajes: 43


Visual Basic 6 y .NET (principiante) / Pascal


« en: 07/07/2006, 13:20:35 »

La API (Application Programming Interface) es un conjunto de funciones para interactuar con Windows. Permite a los programadores de Visual Basic, Delphi, Java, etc usar funciones que ya vienen incorporadas internamente con el propio Windows.

Las funciones principales de la API se encuentran en unas librerias .DLL que se alojan en el directorio System32 de Windows y con ellas se pueden realizar casi todas las tareas del windows, como por ejemplo cambiar la resolución de la pantalla, comprobar si existe un archivo, ejecutar programas, acceder al registro, etc, etc. Las DLLs principales son:

* user32.dll (Maneja la interfaz de usuario)
* kernel32.dll (Trabaja con los archivos y la memoria de la Computadora)
* gdi32.dll (Funciones gráficas)
* winmm.dll (Multimedia)
* shell32.dll (Ejecución de programas)
* advapi32.dll (Funciones avanzadas)

Existen más archivos .DLL con funciones propias, pero estas tres nombradas anteriormente son las principales.

Las ventajas de saber usar las funciones API son principalmente que pueden ser usadas por varios lenguajes de programación que trabajen bajo Windows.

Para ver una lista de las APIs de Windows se puede usar el API Text Viewer que viene con el visual Basic 6.0, que es un programita bastante fácil de usar, te muestra las funciones y su sintaxis. Pero para mi gusto el mejor es el API-Guide, que se puede bajar de: http://www.allapi.net. La última versión es la 3.7. Las ventajas que tiene este programa con respecto al anterior son que además de mostrar la sintaxis de cada función, también muestra ejemplos de como usarlas, no sólo para Visual Basic 6.0 sino que, en algunos casos, también para .NET. Otra ventaja muy útil es que se pueden ver las funciones se agrupadas por categorías, por ejemplo si quiero saber el nombre del usuario que ejecuta mi programa y no me acuerdo el nombre de la función no es necesario que busque entre las miles de funciones que hay, sino que más fácil, tendría que ir al grupo "Windows Information" y buscarla ahí, que de seguro va a ser mucho más fácil.

Para llamar a una funcion API se usa la siguiente sintaxis:

Declare Function <NOMBRE_DE_LA_FUNCION> Lib "<LIBRERIA>" Alias <ALIAS> (PARAMETROS)

Siguiendo con el ejemplo anterior, para saber el nombre del usuario que ejecuta mi programa, después de haber buscado el

nombre de la función (que es GetUserName) vemos que la declaración es:

Código:
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long

Ahí vemos el nombre de la función (GetUserName) perteneciente a la libreria advapi32.dll, el alias GetUserNameA que es el nombre que lleva la función dentro de la DLL y por último los parametros, en este caso son dos:
* lpBuffer: El buffer en donde será guardado el nombre de usuario.
* nSize: Especifica el tamaño máximo del buffer (lpBuffer)

Sabiendo esto ya podemos hacer nuestro programa:

Código:
Private Sub Form_Load()
  Dim Nombre As String

  'Crea un buffer de 100 caracteres
  Nombre = String(100, Chr$(255))
  'Llama a la función, especificando el buffer de 100 caracteres
  GetUserName Nombre, 100
  'Borra los caracteres sobrantes dejando solo lo que nos interesa
  Nombre = Left$(Nombre, InStr(Nombre, Chr$(255)) - 1)
  'Muestra el nombre de usuario
  MsgBox "Usuario: " + Nombre
End Sub

Otra cosa que vale aclarar es que si bien se puede declarar las funciones en el cuerpo del programa, lo ideal siempre es hacerlo en un módulo aparte.

Este fué el primer pantallazo sobre las APIs, bastante cortito y simple, proximamente voy a ver si puedo comentar funciones un poco mas interesantes, mas complejas y útiles como para incorporar a nuestros programas.

*-LaDRi-*
En línea
CID
Administrador
Legend
*****

Prestigio: 22
Desconectado Desconectado

Sexo: Masculino
Estudiante de: Arte de la informática
Título universitario: Programador
Profesión: Desarrollador
Mensajes: 1136



WWW
Lenguajes:
Varios
Bases de datos:
Varios
« Respuesta #1 en: 07/07/2006, 18:29:35 »

Te parece usar éste tema para ir explicando todas las funciones API (las que podamos)?
Ya empezaste con GetUserName, aporto otra.

Public Declare Function GetComputerName Lib "kernel32.dll"
Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long


Nos dá el nombre de la pc que aparece en entorno de red. Se usa asi por ejemplo

Código:
  Dim strPC As String
  Dim lngLongitud As Long
  Dim lngRetVal As Long
  strPC = Space(255)
  lngLongitud = 255
  lngRetVal = GetComputerName(strPC, lngLongitud)
  strPC = Left(strPC, InStr(strPC, vbNullChar) - 1)
  lblNombrePC.Caption = strPC

Sigan colocando más funciones APIs!!

Saludos.
En línea

Ladri
Savant
*******

Prestigio: 4
Desconectado Desconectado

Sexo: Masculino
Mensajes: 43


Visual Basic 6 y .NET (principiante) / Pascal


« Respuesta #2 en: 31/07/2006, 00:15:25 »

2 cortitas y útiles... la primera "IsNetworkAlive" esta función devuelve:

0 - Si no está conectado a ninguna red
1 - A una red LAN
2 - A una red WAN
4 - A American Online (solo en Windows 95 o 98)

Código:
Private Declare Function IsNetworkAlive Lib "SENSAPI.DLL" (ByRef lpdwFlags As Long) As Long

Private Sub Form_Load()
  Dim Red As Long

  Select Case IsNetworkAlive(Red)
    Case 0
      MsgBox "Este equipo no esta conectado a ninguna red"
    Case 1
      MsgBox "Estas conectado a una red LAN"
    Case 2
      MsgBox "Estas conectado a una red WAN"
    Case 4
      MsgBox "Estas conectado a AOL"
  End Select
End Sub


La 2da.. URLDownloadToFile. Sirve para bajar archivos de internet, devuelve 0 si el archivo se bajó correctamente.

Código:
Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _
szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) _ As Long

Private Sub Form_Load()
  Dim Bajado As Long

  Bajado = URLDownloadToFile(0, "http://www.google.com.ar/images/hp0.gif",  _
                             "c:\googlelogo.gif", 0, 0)
  If Bajado = 0 Then
    MsgBox "Se bajó el archivo correctamente"
  Else
    MsgBox "Hubo un error al bajar el archivo"
  End If
End Sub

Ladri
En línea
Foros del Club
   

 En línea
Páginas: [1]   Ir Arriba
  Enviar tema  |  Imprimir  
 
Ir a: