Red de conocimiento informático - Aprendizaje de programación - Programación PDF

Programación PDF

Llama

Hmm. Que interesante

¿Entiendes qué es una API?

¿Qué es una API?

En primer lugar es necesario contarte qué es una API. La llamada API fue escrita originalmente para programadores de C y C. Una API es una función contenida en un archivo de biblioteca de vínculos dinámicos llamado DLL. Según la definición estándar, API es la interfaz de programación de aplicaciones de 32 bits de Windows, que es una serie de funciones, mensajes y estructuras complejas. Permite a los programadores compilar aplicaciones que se ejecutan en los sistemas operativos Windows 95 y Windows NT utilizando diferentes lenguajes de programación. Se puede decir que si has estudiado VC, entonces API no es un problema para ti. Pero si no ha aprendido VC o no está familiarizado con la arquitectura de Windows95, se puede decir que aprender API será una tarea muy difícil.

Si abre la carpeta del sistema WINDOWS, puede encontrar muchos archivos adjuntos llamados DLL. Una DLL contiene más de una función API, docenas o incluso cientos. ¿Podremos todos dominarlo? La respuesta es no: imposible de dominar. Pero, de hecho, realmente no necesitamos dominarlos todos, solo debemos concentrarnos en dominar las funciones API que vienen con el sistema Windos. Sin embargo, también se deben eliminar las funciones que duplican las funciones que vienen con VB. Por ejemplo, el comando etAttr de VB puede obtener atributos de archivo y SetAttr puede establecer atributos de archivo. La API también tiene funciones correspondientes.

GetFileAttributes y SetFileAttributes tienen un rendimiento similar. Después de este cálculo, sólo quedan 5 o 600. Sí, bastante. Sin embargo, puedo decirte que mientras estés familiarizado con 100, tu nivel de programación será al menos el doble de lo que es ahora. Aunque algunas personas dicen que VB y WINDOWS están estrechamente relacionados, creo que API está más cerca.

Window. Si aprende API, lo primero que obtendrá es la comprensión de la arquitectura WINDOWS. Esta cosecha no es fácil.

¿Qué pasaría si no dependiéramos de las API? Puedo decirles que la mayoría son libros de programación avanzada (por supuesto, estos no se llaman libros avanzados y avanzados, sino aquellos que indican al comienzo del libro que el libro está destinado a lectores con una determinada base de VB) , la primera pregunta suele comenzar con la API. Por lo tanto, se puede decir que si no aprende API, probablemente permanecerá en el nivel elemental y no podrá ascender. Quizás la única manera sea pedir ayuda a alguien: me estoy muriendo. Ven y ayúdame. ¿Qué pasa con esto y aquello? ¿Estás aburrido? Por supuesto, ahora hay demasiada gente buena en línea (incluyéndome a mí, jeje), pero debes entender que no podrás producir buenos trabajos de esta manera. Esto se debe a que sin este conocimiento, su cerebro no puede formular una idea de diseño general.

Explorador de texto API [volver]

Muchas funciones API son muy largas. ¿Quieres ver cómo se ve? A continuación se toma la función API DdeClientTransaction como ejemplo:

Declare la función DdeClientTransaction Lib "usuario 32" (pData es Byte, ByVal cbData es Long, ByVal hConv es Long, ByVal hszItem es Long, ByVal wFmt es Long, ByVal wType es Long, ByVal dwTimeout es Long, pdwResult es Long) es Long

¡Guau! ¿Hasta la vista? Si nunca ha estado expuesto a API, creo que debe estar muy asustado. Puedes plantearte si debes seguir estudiando. Pero no te preocupes. Afortunadamente, los diseñadores de Microsoft nos han proporcionado una herramienta útil, que es la API.

Visor de texto.

A través del visor de texto API, podemos encontrar fácilmente las declaraciones de funciones, tipos de estructuras y constantes requeridas por el programa, luego copiarlos al portapapeles y finalmente pegarlos en el segmento de código del programa VB.

En la mayoría de los casos, siempre que determinemos las funciones, estructuras y constantes requeridas por el programa, podemos agregarlas al segmento del programa mediante las operaciones anteriores del navegador de texto API para que estas funciones se puedan usar en el programa. Estas son las preguntas de sentido común más básicas para aprender API, que están lejos del enorme contenido del sistema de las API. ¿Dónde desperdiciaremos nuestra energía en el futuro (de ninguna manera es un desperdicio)? Es decir:

Cuándo usar qué función, cuándo usar qué tipo de estructura y cuándo usar qué constante.

Declaración de función API

Recordemos. ¿Cómo declarar una función en VB? Creo que si estás leyendo este artículo, definitivamente podrás responder esta pregunta. La siguiente es una declaración de función con la que debería estar familiarizado:

La función SetFocus (ByVal hwnd tiene la misma longitud)

Es decir, esta línea de código define una función llamada SetFocus , que tiene un parámetro de tipo de datos largo y lo pasa por valor (ByVal). Una vez ejecutada la función, se devolverán datos largos.

La declaración de funciones API también es muy similar. Por ejemplo, la función SetFocus en la API se escribe así:

Declarar la función SetFocus Lib "usuario 32" alias "SetFocus" (ByVal hwnd As Long) como Long

es un poco complicado. Sí, es un poco complicado. Pero puedo decirle que, excepto estas partes redundantes, las otras partes siguen siendo las mismas que aprendió antes. Lo mismo ocurre con la llamada de funciones en un programa. Por ejemplo:

Dim dl As Long

dl amp=SetFoucs(Form1.Hwnd)

Sin embargo, una cosa está clara. No es como un programa escrito por mí ni como VB.

Al igual que su propia función, su uso se puede encontrar en la ayuda en línea de VB. La única forma es estudiar y consultar información distinta a VB.

La declaración Declare se utiliza para declarar una referencia a un procedimiento externo en una biblioteca de vínculos dinámicos (DLL) a nivel de módulo. Para ello, sólo hay que recordar que esta declaración debe estar escrita en cualquier declaración de función API.

Iib representa una biblioteca de vínculos dinámicos o un recurso de código que contiene un procedimiento o función declarado. En otras palabras, explica la cuestión de dónde proviene una función o procedimiento.

Como se muestra en el ejemplo anterior, la biblioteca SetFocus "user32" indica que la función SetFocus proviene del archivo user32.dll. Los principales archivos de la biblioteca de enlaces dinámicos dll son:

Administración de ventanas User32.dll. Generar y administrar la interfaz de usuario de la aplicación.

Interfaz del dispositivo gráfico GDI32.dll. Genere salida gráfica para dispositivos Windows.

Servicio del sistema Kernel32.dll. Accede a los recursos informáticos del sistema operativo.

Tenga en cuenta que cuando el archivo DLL no está en la carpeta de Windows o del sistema, debe estar en la función (

ruta). Por ejemplo, SetFocus Lib "c:\Mydll\user32 "

Los alias en las declaraciones de funciones son opcionales. Indica que el procedimiento a llamar tiene otro nombre (alias) en la biblioteca de vínculos dinámicos (DLL). Por ejemplo, el alias "SetFocus" significa que la función SetFocus en User32.dll tiene otro nombre,

SetFocus. ¿Por qué los dos nombres son iguales? Por supuesto que puede ser diferente. En muchos casos, el nombre de la función descrita por alias, que es el último carácter de Alias, suele ser el carácter a. Por ejemplo, otro nombre de la función SetWindowsText es

SetWindowsTextA, que está representado por el alias. "EstablecerWindowsTextA". Esta A es solo la convención de nomenclatura utilizada por los diseñadores, lo que indica que la función pertenece a la versión ANSI.

Entonces, ¿para qué sirven los alias? En teoría, un alias proporciona un método funcional para llamar a la API de otro alias. Si se especifica un alias, aunque llamamos a la función según la función después de la declaración Declare, se prefiere el alias en la llamada real de la función. Por ejemplo, las siguientes dos declaraciones de función (ABCD) son válidas, llaman a la misma función SetFocus:

Declarar la función SetFocus Lib " usuario 32 " " SetFocus " (ByVal hwnd As Long) como Long p>

Declarar la biblioteca ABCD SetFocus "user32" alias "SetFocus" (ByVal hwnd As Long) como Long

Cabe señalar que al seleccionar un alias, preste atención al caso de el alias; si no, si se selecciona Alias, el nombre de la función debe distinguir entre mayúsculas y minúsculas y no se puede cambiar. Por supuesto, en muchos casos, porque la declaración de función proviene directamente de la API.

Navegadores de texto, por lo que este error es poco común, pero debes tenerlo en cuenta.

Por último, me gustaría recordarles que las declaraciones API (incluyendo estructuras y constantes) deben colocarse en la sección "Declaraciones Generales" del formulario o módulo.

Tipos de datos y "seguridad de tipos"

Los tipos de datos utilizados en las funciones API son básicamente los mismos que los de VB. Pero como función API de WIN32, no hay ningún número entero.

Tipo de datos. Otro punto es que el tipo de datos booleano no es visible en las funciones API. En la función API, el tipo de datos variable se muestra como Cualquiera, por ejemplo, Datos como cualquiera. Aunque está destinado a permitir que se pase cualquier tipo de parámetro como argumento a una función API, hacerlo tiene algunas desventajas. La razón es que esto hará que se desactiven todos los tipos de comprobaciones de los parámetros de destino. Naturalmente, esto introduce errores para varios tipos de llamadas de parámetros.

Para implementar una verificación de tipos estricta y evitar los problemas anteriores, una forma es utilizar la técnica de alias anterior en la función. Por ejemplo, la función API GetDIBits se puede declarar de otra forma. Como se muestra a continuación:

El prototipo de la función GetDIBits:

Función de declaración pública GetDIBits Lib "GDI 32" alias "GetDIBits" (ByVal aHDC es Long, ByVal hBitmap es Long, ByVal nStartScan es Long, ByVal nNumScans es Long, lpBits es Any, lpBI es BITMAPINFO, ByVal wUsage es Long)

Modificación de la función GetDIBits:

Función de declaración pública GetDIBitsLong Lib "gdi32 "alias " GetDIBits " (ByVal aHDC es largo, ByVal hBitmap es largo, ByVal nStartScan es largo, ByVal nNumScans es largo, lpBits es largo, lpBI es BITMAPINFO, ByVal wUsage es largo) es largo

A través de lo que tiene Aprendí antes en este curso Con base en el conocimiento, ya podemos saber que ya sea el prototipo de función GetDIBits o la función GetDIBitsLong modificada, en realidad se llamará a la función GetDIBits original especificada por Alias. Pero deberías ver que la diferencia entre los dos es que forzamos que el parámetro lpBits sea Long en la función modificada. Esto minimizará la probabilidad de errores en las llamadas a funciones. Este enfoque se denomina declaración de "tipo seguro".