Guía de API de Windows 32 en QuickTest
Guía de API de Windows 32 en QuickTest
¿QUÉ ES API?
DESIGNMODELS............................................................................................................... 2
RELEASEPOLICIES............................................................................................................ 3
EJEMPLOS DE API..................................................................................................................... 3
LAAPICIÓNDEWINDOWS ....................................................................................................................... 4
ARCHIVOS DLL (BIBLIOTECA DINÁMICA)................................................................................ 4
FUNDAMENTOS DE ADLL.................................................................................................... 4
ANTECEDENTES......................................................................................................................... 5
HISTORY................................................................................................................................ 5
MENSAJESWINDOWS............................................................................................................ 6
WINDOWSHANDLES.............................................................................................................. 7
VISIÓN GENERAL DE LOS COMPONENTES DE LA API DE WINDOWS................................................................ 7
SERVICIOSBÁSICOS................................................................................................................ 7
INTERFAZDEDISPOSITIVOSGRÁFICOS...................................................................................... 7
USERINTERFACE.............................................................................................................. 8
BIBLIOTECA DE CUADRO DE DIÁLOGO COMÚN...................................................................................... 8
BIBLIOTECA DE CONTROLES COMUNES.................................................................................. 8
SHELLDEWINDOWS.............................................................................................................. 8
SERVICIOSRED......................................................................................................... 9
APISWEB.......................................................................................................................... 9
APIS RELACIONADOS CON MULTIMEDIA............................................................................................ 9
APIS PARA INTERACCIÓN ENTRE PROGRAMAS......................................................... 10
HERRAMIENTAS DE WINDOWSAPI......................................................................................................... 11
VISOR DE API................................................................................................................... 11
ELOBJETOEXTERNO.......................................................................................................... 12
LIMITACIONES AL USAR THEEXTERNOBJECT....................................................................... 12
CONVERSIÓN A [Link]................................................................................ 13
Ejemplo 1: Función GetPrivateProfileString............................................................... 13
Ejemplo 2: Función GetServiceKeyName................................................................... 15
HIGHLIGHTS FORWIN32 APIINQUICKTEST................................................................... 17
Pasando parámetros a las funciones de la API de Win32................................................................. 18
Funciones de devolución de llamada....................................................................................................... 19
Interacción con un archivo dll personalizado .................................................................................. 19
ELOBJETOEXTERNO........................................................¡ERROR! MARCADOR NO DEFINIDO.
APÉNDICE 13.A .................................................................................................................... 19
Declarar Tipos de Datos...................................................................................................... 22
API de Windows 32
Este tutorial trata sobre cómo agregar funcionalidad adicional a tus aplicaciones mediante
usando la Interfaz de Programación Avanzada de Windows.
La API de Windows (Interfaces de Programación de Aplicaciones) es un conjunto de definiciones predefinidas
Las funciones de Windows se utilizan para controlar la apariencia y el comportamiento de cada Windows
elemento (desde la perspectiva de la ventana de escritorio hasta la asignación de memoria para un)
nuevo proceso). Cada acción del usuario provoca la ejecución de varios o más API
Es algo así como el código nativo de Windows. Otros lenguajes solo actúan como un
shell para proporcionar una forma automatizada y más fácil de acceder a las APIs.
Una interfaz de programación de aplicaciones (API) es una interfaz de código fuente que un
computer system or program library provides in order to support requests for
servicios que se harán de él por un programa de computadora.
Una API se diferencia de una Interfaz Binaria de Aplicación en que se especifica en términos de
un lenguaje de programación que se puede compilar cuando se construye una aplicación, en lugar de
que una descripción explícita de bajo nivel de cómo se organiza los datos en memoria.
El software que proporciona la funcionalidad descrita por una API se dice que es un
implementación de la API. La API en sí es abstracta, en el sentido de que especifica un
interfaz y no se involucra en los detalles de implementación.
Una API a menudo es parte de un kit de desarrollo de software (SDK).
El término API se utiliza en dos sentidos relacionados:
Una interfaz coherente que consiste en varias clases o varios conjuntos de relacionados
funciones o procedimientos.
Un único punto de entrada como un método, función o procedimiento.
En términos generales, una API es un software del sistema para un sistema operativo o
entorno, que consiste en un conjunto estandarizado de funciones y procedimientos.
Los programadores pueden llamar a estas funciones y procedimientos desde sus programas para obtener
funcionalidad adicional. Porque los programadores no tienen que escribir este código
se ahorran tiempo. El sistema también proporciona un estándar y bien
manera de trabajar documentada
Modelos de Diseño
Existen varios modelos de diseño para APIs. Interfaces destinadas a la más rápida
la ejecución a menudo consiste en conjuntos de funciones, procedimientos, variables y datos
estructuras. Sin embargo, existen otros modelos también - como el intérprete utilizado para
evalúa expresiones en ECMAScript/JavaScript o en la capa de abstracción - cuál
aliviar al programador de la necesidad de saber cómo las funciones de la API se relacionan
a los niveles más bajos de abstracción. Esto hace posible rediseñar o mejorar
las funciones dentro de laAPI sin romper el código que depende de ella.
Algunas API, como las que son estándar en un sistema operativo, se implementan
como bibliotecas de código separadas que se distribuyen con el sistema operativo. Otros
exigir a los editores de software que integren la funcionalidad de la API directamente en el
aplicación. Esto forma otra distinción en los ejemplos anteriores. Microsoft
Las API de Windows vienen con el sistema operativo para que cualquiera las use. Software para
los sistemas embebidos como las consolas de videojuegos generalmente caen en el
categoria integrada en la aplicación. Mientras que un documento oficial de la API de PlayStation puede ser
interesante de leer, es de poca utilidad sin su correspondiente implementación, en
la forma de una biblioteca separada o un kit de desarrollo de software.
Una API que no requiere regalías para acceder y usar se llama "abierta".
Aunque generalmente existen "implementaciones de referencia" autorizadas para una API
como Microsoft Windows para la API Win32), no hay nada que impida el
creación de implementaciones adicionales. Por ejemplo, la mayoría de la API de Win32 puede
se proporcionará bajo un sistema UNIX utilizando un software llamado Wine.
Políticas de Lanzamiento
Algunas empresas protegen celosamente la información sobre sus API del público en general.
consumo. Por ejemplo, Sony solía hacer su API oficial de PlayStation 2
disponible solo para desarrolladores de PlayStation con licencia. Esto permitió a Sony controlar quién
escribió juegos de PlayStation 2. Tal control puede tener beneficios de control de calidad y
ingresos potenciales por licencias.
Algunas empresas hacen sus APIs disponibles de forma gratuita. Por ejemplo, Microsoft hace
la mayor parte de su información de API es pública, para que se escriba software para Windows
plataforma.
Las empresas basan su elección de política de publicación en maximizar el beneficio para ellas.
Ejemplos de API
La API de Windows
Las funciones de la API residen en DLLs (como [Link], [Link], [Link], ...) en el
Directorio del sistema de Windows.
La API de Windows es el nombre que Microsoft le da al conjunto central de aplicaciones
interfaces de programación disponibles en los sistemas operativos Microsoft Windows.
está diseñado para ser utilizado por programas en C/C++ y es la forma más directa de interactuar
con un sistema operativo Windows para aplicaciones de software. Acceso de bajo nivel a un
Sistema Windows
A El Kit de Desarrollo de Software (SDK) está disponible para Windows, que proporciona
documentación y herramientas para permitir a los desarrolladores crear software utilizando el
API de Windows y tecnologías de ventanas asociadas.
La API de Windows es el conjunto de funciones y procedimientos disponibles en Windows.
Pueden ser utilizados por todo tipo de programadores. Mercury agregó el acceso a la API.
interfaz incluyendo a aquellos que trabajan en QuickTest.
Biblioteca de enlaces dinámicos (DLL), también conocida como biblioteca de enlaces dinámicos (sin el
guion), es la implementación de Microsoft del concepto de biblioteca compartida en el
Sistemas operativos Microsoft Windows. Estas bibliotecas suelen tener el archivo
extensionDLL, OCX (para bibliotecas que contienen controles ActiveX), o DRV (para legado)
controladores del sistema).
Hemos mencionado que un aDLL se crea como un proyecto que contiene al menos uno
archivo fuente y este archivo fuente debe presentar un punto de entrada. Después de crear el
DLL, la construirás y la distribuirás para que otros programas puedan usarla. Al construirla,
debes crear un archivo de biblioteca que acompañe a la DLL. Este archivo de biblioteca será
utilizado por otros programas para importar lo que está disponible en la DLL:
Cuando se crea la biblioteca de importación, contiene información sobre dónde se encuentra cada
la función disponible está incluida en el DLL y puede localizarla. Cuando una aplicación
necesita usar una función contenida en el DLL, presenta su solicitud a la importación
la biblioteca. La biblioteca de importación verifica el DLL para esa función. Si la función existe,
el programa cliente puede usarlo. Si no, la biblioteca comunica esto al
la aplicación y la aplicación presenta un error.
Antecedentes
El propósito original de los DLLs era ahorrar tanto espacio en disco como memoria requerida.
para aplicaciones al almacenarlo localmente en el disco duro. En un no convencional
la biblioteca compartida, se añaden secciones de código simplemente al programa que llama. Si dos
los programas llaman a la misma rutina, ese código se duplicaría. En cambio, cualquier código
las cuales muchas aplicaciones comparten podrían separarse en un DLL que solo existe como
un archivo de disco único y una única instancia en memoria. El uso extensivo de DLLs permitió
versiones tempranas de Windows para funcionar bajo condiciones de memoria ajustadas.
Las DLL proporcionan los beneficios estándar de las bibliotecas compartidas, como la modularidad.
La modularidad permite realizar cambios en el código y los datos en un solo conjunto autónomo.
DLL compartida por varias aplicaciones sin ningún cambio en las aplicaciones
a sí mismos. Esta forma básica de modularidad permite parches relativamente compactos
y paquetes de servicio para aplicaciones grandes, como Microsoft Office, Microsoft
Visual Studio, e incluso Microsoft Windows en sí mismo.
Historia
Mensajes de Windows
Los mensajes son la forma básica en que Windows le dice a su programa que hay algún tipo de entrada.
ha ocurrido y debes procesarlo. Se envía un mensaje a tu formulario cuando el
el usuario hace clic en un botón, mueve el ratón sobre él o escribe texto en un cuadro de texto. Todo
los mensajes se envían junto con cuatro parámetros
Un manejador de ventana, un identificador de mensaje y dos valores de 32 bits (Long). El
el identificador de la ventana contiene el identificador de la ventana a la que se dirige el mensaje.
El identificador es en realidad el tipo de entrada que ocurrió (clic, movimiento del mouse).
Dos valores especifican información adicional para el mensaje (como dónde está el)
cursor del ratón cuando se mueve el ratón).
Pero, cuando te envían mensajes, ¿por qué no los ves? Parece que alguien
está robando tu correo. Y antes de que te enojes lo suficiente, déjame decirte.
Algo más que debe decirse: puedes enviar mensajes a tu propia ventana
o a otro tú mismo. Solo llama a SendMessage o PostMessage
(SendMessagewill cause the window to process the message immediately and
PostMessage lo publicará en una cola, llamada cola de mensajes, después de cualquier otro
mensajes esperando ser procesados (regresará después de que el mensaje sea procesado,
es decir, con algún retraso)). Debes especificar el identificador de la ventana para enviar el mensaje
a, el mensaje y los dos valores de 32 bits.
Manejadores de Windows
Un identificador de ventana (generalmente abreviado como hWnd) es un identificador único que Windows
asigna a cada ventana creada. Por ventana en este caso nos referimos a
todo, desde botones de comando y cuadros de texto, hasta cuadros de diálogo y completos
ventanas.
El identificador de ventana se utiliza en las API como el único método para identificar una ventana. Él
es un valor Long (4 bytes) y puedes obtener el identificador para formularios y casi todos
controles.
Windows identifica cada formulario, control, menú, botón y elemento de menú o
cualquier cosa que puedas pensar por su mango. Cuando se ejecuta tu aplicación, cada
el control se le asigna un mango que se utiliza más tarde para separar el botón de
el resto de los controles. Si deseas realizar alguna operación en el botón
a través de unAPIdebes usar este identificador. ¿De dónde obtenerlo? BuenoAPI tiene
se proporcionó la propiedad anhWnd para todos los controles que tienen manejadores en Windows.
Servicios Básicos
us/winprog/winprog/interfaz_de_dispositivo_grá[Link]
Interfaz de Usuario
Proporciona la funcionalidad para crear y gestionar ventanas de pantalla y la mayoría de las básicas
los controles, como botones y barras de desplazamiento, reciben entrada del mouse y del teclado, y
otra funcionalidad asociada con la parte GUI de Windows. Esta unidad funcional
reside en [Link] en Windows de 16 bits y en [Link] en Windows de 32 bits. Desde
Las versiones de Windows XP, los controles básicos residen en [Link], junto con el
controles comunes (Biblioteca de Controles Comunes).
Proporciona a las aplicaciones los cuadros de diálogo estándar para abrir y guardar archivos,
elegir color y fuente, etc. La biblioteca reside en un archivo llamado [Link] en 16-
bit Windows, y [Link] en Windows de 32 bits. Está agrupado bajo el Usuario
Categoría de interfaz de la API.
Para más información:
[Link]
us/winui/winui/windowsuserinterface/userinput/[Link]
Otorga a las aplicaciones acceso a algunos controles avanzados proporcionados por el sistema operativo
sistema. Esto incluye cosas como barras de estado, barras de progreso, barras de herramientas y pestañas.
La biblioteca reside en un archivo DLL llamado [Link] en Windows de 16 bits, y
[Link] en Windows de 32 bits. Se agrupa bajo la categoría de Interfaz de Usuario de
laAPI.
Para más información:
[Link]
us/winprog/winprog/common_control_library.asp
Shell de Windows
us/shellcc/platform/shell/programmersguide/shell_intro.asp
Servicios de Red
APIs web
El navegador web Internet Explorer también expone muchas API que a menudo son utilizadas por
aplicaciones, y como tal se podría considerar una parte de la API de Windows. Internet
Explorer ha sido un componente integrado del sistema operativo desde
Windows 98 y proporciona servicios relacionados con la web a las aplicaciones. La integración será
deja de usar Windows Vista. Específicamente, proporciona:
Una biblioteca para ayudar con el soporte de texto en múltiples idiomas e internacional
([Link]).
Transformaciones de DirectX, un conjunto de componentes de filtros de imagen.
DirectSound para acceso a tarjetas de sonido aceleradas por hardware a bajo nivel.
Visor de API
Una vez que se ha cargado la información del archivo de la base de datos, utiliza el Visor de API para seleccionar
El Objeto Externo
Descripción
Te permite declarar llamadas a procedimientos externos desde un enlace dinámico externo
biblioteca (DLL).
Sintaxis
[Link],MethodName,LibName,Alias,ArgType(s)
Argumentos
Parámetro Description
Tipo de dato del valor devuelto por el método. Para los tipos de datos disponibles,
RetType ver Declarar Tipos de Datos en la Tabla 1 en la página 22
MethodName Una cadena que puede ser cualquier nombre de procedimiento válido.
Dani Vainstein
1
Se ampliará en el Capítulo COM.
Converting to [Link]
Podemos ver que la función devuelve un valor DWORD, de acuerdo con la Declaración
Tipos de datos DWORD = micDWord, El segundo argumento es el nombre del
función que se usará en QuickTest
[Link] micDword, "GetIniString"
[Link] micDword,"GetIniString","[Link]","GetPrivateProfileStringA"
LPCTSTR significa: Puntero largo a una cadena de caracteres constante terminada en nulo
[Link]
[Link] micLong
El valor del nombre del método puede ser cualquier cadena única. Se recomienda usar el
el nombre de la función en sí, para seguir los estándares de codificación.
Usando la función.
¡La activación de la función debe ser después de la declaración de la función!
Puedes colocar tu declaración un línea antes de su uso, o en la parte superior de la
acción
Puedes colocar la declaración en una acción reutilizable Init.
Puedes poner tu declaración en un archivo de recursos VBS.
Para activar esta función en particular, necesitamos el identificador del gestor de servicios, y
entonces necesitamos cerrar el manejador del servicio (liberar la memoria)
Option Explícito
[Link] micLong,"OpenSCManager","advapi32","OpenSCManagerA", _
micString, micString, micLong
[Link] micLong,"CloseServiceHandle","[Link]","", micLong
[Link] micLong,"GetServiceKeyName","advapi32","GetServiceKeyNameA", _
micLong, micString, micString + micByRef, micLong + micByRef
Privado Const GENERIC_READ = &H80000000
Dim hSCManager
Dim sKeyName
Dim nRet, nBuffer
Este es un error de QTP. Es una declaración legal en VBS, ejecutar el script no generará un
error en tiempo de ejecución
HWND, HDC, HMENU, etc. - y otros tipos como estos. Todos ellos comienzan con
La mano significa MANIJA, para manijas de diferentes tipos de objetos.
Por ejemplo, HBITMAP es un identificador de mapa de bits; HBRUSH es un identificador de brocha y así sucesivamente.
on. Todos ellos se evalúan a Long y deben ser pasados por valor.
Nota también que LPVOID se declara como variable AsAny. Algunos mensajes
contienen parámetros declarados como Any. Esto significa que este parámetro puede ser una variedad
de tipos (puedes pasar un entero, una cadena, o un tipo definido por el usuario, o lo que sea.
no tendrás que llamar a una función para obtener esta dirección. Cuando pases tu argumento
Por defecto (ByRef) en realidad pasas su dirección. Lo que hay que recordar aquí
es que, si el tipo de parámetro comienza con LP-, deberías pasarlo ByRef. Por la
De esta manera, LPARAM no es un puntero. Debes pasar el valor real aquí, así que es
pasó ByVal.
También hay algún tipo extraño NULL. Simplemente elige un método para pasarlo cuando
necesitado. En la mayoría de los casos usa ByVal0& para números, Null o vbNull.
y para cadenas usa vbNullString, para un solo carácter usa vbNullChar.
VOID se utiliza para el valor de retorno de funciones para especificar que no hay tal valor.
La API no tiene Subs, así que esta es la forma en que las implementa. Solo recuerda
- si el valor de retorno es VOID usa micVoid.
Estructuras o tipos de datos complejos. No hay forma de utilizar esos tipos de datos en
QuickTest a través de objeto Extern.
Bueno, si el valor de retorno es una estructura, puedes usar micUnknown, y
manipúlelo de alguna manera en su código, pero, usando la API, las funciones no devuelven
estructuras, debes pasar la estructura ByRef. Y aquí está el problema, el
El objeto Extern no puede hacer esto, VBScript está limitado (sin soporte de API en absoluto) así que, no es posible.
manera de construir una estructura dentro de QuickTest o VBS.
Por ejemplo, hay una función de API muy útil llamada GetCursorPos, la función
devuelve la posición del cursor a través de la estructura POINT.
La solución para este problema en el uso de clases COM personalizadas por el usuario.
Por supuesto que sabes cómo pasar parámetros, solo ponlo en la llamada a la función y es
¡Hecho! Bueno, hay algunos detalles de los que deberías estar al tanto al pasar.
parámetros para funciones de API.
ByValorByRef. Normalmente no tienes que preocuparte por estas palabras clave, ya que API de VB
El visor de texto declara los parámetros de la función como los solicita la API y cuando tú
simplemente ingresa tu valor, se pasa tal como se declara.
Generalmente, cuando un valor se pasa por valor (passByVal), el valor real se pasa directamente al
función, y cuando se pasa por referencia, se pasa la dirección (puntero) del valor.
Pasar cadenas a la función API tampoco es difícil. La API espera la dirección de
el primer carácter de la cadena y lee hacia adelante desde esta dirección hasta que alcanza un
Caracter nulo. Suena mal, pero así es como el sistema operativo maneja realmente las cadenas.
lo único que hay que recordar es siempre pasar el StringByRef.
La situación es ligeramente diferente cuando esperas que se devuelva cierta información.
por la función. Aquí está la declaración de las funciones de GetComputerNameAPI:
Dim sBuffer
Dim nRet, nBuffSize
nBuffSize =255
nRet = [Link](sBuffer, nBuffSize)
Algunas funciones también esperan arreglos. Aquí hay un ejemplo. Los últimos dos parámetros.
son arreglos de Long. Para pasar un arreglo a una función, solo pasas el primer elemento.
Aquí hay un código de ejemplo:
Opción Explícita
[Link] micLong,"SetSysColors", usuario32","EstablecerColoresDelSistema", _
micLong, micLong+micByref, micLong+micByref
Privado Const COLOR_ACTIVECAPTION = 2
Privado Const COLOR_INACTIVECAPTION =3
Privado Const COLOR_CAPTIONTEXT =9
Privado Const COLOR_INACTIVECAPTIONTEXT =19
Dim SysColor(3), ColorValues(3)
Dim nRet
SysColor(0) = COLOR_CAPTURA_ACTIVA
SysColor(1) = COLOR_CAPTIONINACTIVO
SysColor(2) = COLOR_TEXTO_DEL_CAPTION
SysColor(3) = COLOR_TEXTOCAPTION_INACTIVO
ColorValues(0) = RGB(58,158,58)'verde oscuro
ColorValues(1) = RGB(93,193,93)'verde claro
ColorValues(2) = 0'negro
ColorValues(3) = RGB(126,126,126)'gray
nRet = [Link](4, SysColor(0), ColorValues(0))
Funciones de Retorno
Una devolución de llamada es una función que escribes y le dices a Windows que llame por alguna razón.
crea tu propia función con un número y tipo de parámetros especificado, luego di
Ventanas para las cuales esta función debería ser llamada por alguna razón y sus parámetros
llenado con alguna información que necesitas. Luego Windows llama a tu función, tú manejas el
parámetros y salir de la función devolviendo algún tipo de valor. Un uso típico
de las devoluciones de llamada es para recibir un flujo continuo de datos de Windows. Este tema
tampoco es compatible con QuickTest.
También puedes interactuar con tus DLL de personalización, tus DLL de aplicaciones probadas.
Cada vez que escriben en VB, C o C++.
La biblioteca de tiempo de ejecución de Microsoft C tiene el nombre de archivo [Link].
Una característica muy agradable y útil (para mí) es resaltar automáticamente un objeto.
antes de acceder a él.
Destacar el objeto
Hacer clic
Primero uso la función RegisterUserFunc para anular el método del objeto común
Dentro de la función sobreescrita, realizo una consulta [Link] y [Link].
Llamo a alguna API de win32 para la función de resaltar, y luego hago clic en el botón.
Más para TextEdit, Lista, WebEdit, WebList, también añado un punto de sincronización para lo esperado
resultado.
Al resaltar cada objeto antes de que QTP acceda a él, se disminuirá el rendimiento.
Tu script será más lento, pero creo que vale la pena. Puedes seguir visualmente cada operación que
QTP hace sobre tu aplicación. Y por supuesto puedes añadir un Entorno o Global
Parámetro que omite el resaltado, al ejecutar el script por la noche.
Sobrescritura
Fin Función
Declaraciones de API
La función fBlink
' *****************************************************************************
** fBlink
** Descripción : Destaca un control un número específico de veces "Veces
** Todas las funciones son API de Windows - Extern debe ser declarado.
' *****************************************************************************
Público Función fBlink(ByRef remitente, ByVal veces)
Const PS_SOLID = 0 :Const PS_INSIDEFRAME = 6 :Const R2_NOT = 6
Const NULL_BRUSH = 5 :Const PEN_WIDTH = 2 :
Dim hDC, hPen
Dim nX, nY, nH, nW, i
Appendix 13.A
micInteger 2 int
micLong 3 largo
micFloat 4 flotar
micDoble 5 doble
micString 8 CHAR*
micDispatch 9 IDispatch*
micWideString 18 WChar*
micChar 19 carácter
micDesconocido 20 IUnknown
micHwnd 21 HWND
micVPtr 22 void*
micShort 23 corto
micWord 24 PALABRA
micDWord 25 DWORD
micByte 26 BYTE
micWParam 27 WPARAM
micLParam 28 LPARAM
micLResultado 29 LRESULT
micByRef h&4000 fuera
micUnsigned h&8000 sin signo
micUChar micChar + micUnsigned unsigned char
micULong micLong + micSinSigno sin signo largo
micUShort micCorto entero corto sin signo