API Windows 32: Guia Rápido e Funcionalidades
API Windows 32: Guia Rápido e Funcionalidades
O QUE É API?........................................................................................................................ 2
MODELOSDEDESIGN............................................................................................................... 2
POLÍTICAS DE LIBERAÇÃO............................................................................................................ 3
EXEMPLOS DE API................................................................................................................. 3
A API DO WINDOWS ............................................................................................................... 4
ARQUIVOS DLL (DYNAMICLINKLIBRARY)................................................................................. 4
FUNDAMENTOS DO ADLL
FUNDO
HISTÓRIA
MENSAGENSWINDOWS
MANIPULADORES_DE_JANELA.............................................................................................................. 7
VISÃO GERAL DOS COMPONENTES DA API WINDOWS................................................................ 7
SERVIÇOS BASE................................................................................................................ 7
INTERFACEDEDISPOSITIVOGRÁFICO.......................................................................................... 7
INTERFACE DO USUÁRIO
BIBLIOTECADADIALOGOCOMUM...................................................................................... 8
BIBLIOTECA DE CONTROLE COMUM........................................................................................... 8
SHELLWINDOWS.............................................................................................................. 8
SERVIÇOS DE REDE......................................................................................................... 9
WEBAPIS......................................................................................................................... 9
APIs RELACIONADAS A MULTIMÍDIA............................................................................................ 9
APIs PARA INTERAÇÃO ENTRE PROGRAMAS................................................................. 10
FERRAMENTAS WINDOWSAPI......................................................................................................... 11
VISUALIZADOR DE API................................................................................................................... 11
OOBJETOEEXTERNO.......................................................................................................... 12
LIMITAÇÕES USANDO O OBJETO EXTERNO....................................................................... 12
CONVERTENDO [Link]................................................................................ 13
Exemplo 1: Função GetPrivateProfileString............................................................... 13
Exemplo 2: Função GetServiceKeyName................................................................... 15
DESTAQUES PARA A API WIN32 NO QUICKTEST................................................................... 17
Passando Parâmetros para funções da API Win32................................................................. 18
Funções de Retorno de Chamada....................................................................................................... 19
Interagindo com um arquivo dll personalizado .................................................................................. 19
OOBJETOEXTERNO........................................................ERRO! MARCADOR NÃO DEFINIDO.
APÊNDICE 13.A .................................................................................................................... 19
Declara tipos de dados...................................................................................................... 22
API do Windows 32
Este tutorial é sobre como adicionar funcionalidades adicionais às suas aplicações por meio de
usando a Interface de Programação Avançada do Windows.
A API do Windows (Interfaces de Programação de Aplicativos) é um conjunto de pré-definidos
É algo como o código nativo do Windows. Outras linguagens apenas agem como um
shell para fornecer uma maneira automatizada e mais fácil de acessar APIs.
O que é API?
Uma interface de programação de aplicativos (API) é uma interface de código fonte que um
sistema de computador ou biblioteca de programa fornece para suportar solicitações por
serviços a serem feitos por um programa de computador.
Uma API difere de uma Interface Binária de Aplicação na medida em que é especificada em termos de
uma linguagem de programação que pode ser compilada quando um aplicativo é construído, em vez de
do que uma descrição explícita de baixo nível de como os dados estão dispostos na memória.
O software que fornece a funcionalidade descrita por uma API é dito ser um
implementação da API. A própria API é abstrata, pois especifica um
interface e não se envolve com os detalhes de implementação.
Uma API é frequentemente parte de um kit de desenvolvimento de software (SDK).
O termo API é usado em dois sentidos relacionados:
Uma interface coerente composta por várias classes ou vários conjuntos relacionados
funções ou procedimentos.
Um único ponto de entrada, como um método, função ou procedimento.
Em termos gerais, uma API é um software de sistema para um sistema operacional ou
ambiente, que consiste em um conjunto padronizado de funções e procedimentos.
Os programadores podem chamar essas funções e procedimentos de seus programas para obter
funcionalidade extra. Porque os programadores não precisam escrever esse código
eles mesmos, economizam tempo. O sistema também fornece um padrão e bem
forma documental de trabalho
Modelos de Design
Existem vários modelos de design para APIs. Interfaces destinadas ao mais rápido
a execução muitas vezes consiste em conjuntos de funções, procedimentos, variáveis e dados
estruturas. No entanto, outros modelos também existem - como o intérprete usado para
avalie expressões no ECMAScript/JavaScript ou na camada de abstração - qual
aliviar o programador da necessidade de saber como as funções da API se relacionam
para os níveis mais baixos de abstração. Isso torna possível redesenhar ou melhorar
as funções dentro da API sem quebrar o código que depende dela.
Algumas APIs, como as que são padrão de um sistema operacional, são implementadas
como bibliotecas de código separadas que são distribuídas com o sistema operacional. Outros
exigir que os editores de software integrem a funcionalidade da API diretamente no
aplicação. Isso forma outra distinção nos exemplos acima. Microsoft
As APIs do Windows vêm com o sistema operacional para que qualquer pessoa possa usar. Software para
sistemas embarcados, como consoles de videogame, geralmente se enquadram em
categoria integrada ao aplicativo. Embora um documento oficial da API do PlayStation possa ser
interessante de ler, é de pouca utilidade sem sua correspondente implementação, em
a forma de uma biblioteca separada ou kit de desenvolvimento de software.
Uma API que não requer royalties para acesso e uso é chamada de "aberta".
Embora geralmente existam 'implementações de referência' autoritativas para uma API (que
como o Microsoft Windows para a API Win32), não há nada que impeça o
criação de implementações adicionais. Por exemplo, a maioria da API Win32 pode
ser fornecido sob um sistema UNIX usando um software chamado Wine.
Políticas de Lançamento
Algumas empresas guardam zelosamente as informações sobre suas APIs do público geral.
consumo. Por exemplo, a Sony costumava fazer sua API oficial do PlayStation 2
disponível apenas para desenvolvedores licenciados da PlayStation. Isso permitiu que a Sony controlasse quem
escreveu jogos para PlayStation 2. Esse controle pode ter benefícios de controle de qualidade e
potencial receita de licenciamento.
Algumas empresas disponibilizam suas APIs gratuitamente. Por exemplo, a Microsoft disponibiliza
a maior parte das informações da sua API são públicas, para que software seja escrito para o Windows
plataforma.
As empresas baseiam sua escolha de política de publicação na maximização do benefício para elas.
Exemplos de API
A API do Windows
A O Software Development Kit (SDK) está disponível para Windows, que fornece
documentação e ferramentas para permitir que os desenvolvedores criem software usando o
API do Windows e tecnologias de janelas associadas.
Biblioteca de vínculo dinâmico (DLL), também conhecida como biblioteca de vínculo dinâmico (sem o
hífen), é a implementação da Microsoft do conceito de biblioteca compartilhada na
Sistemas operacionais Microsoft Windows. Essas bibliotecas geralmente têm o arquivo
extensionDLL, OCX (para bibliotecas que contêm controles ActiveX) ou DRV (para legado)
drivers do sistema).
DynamicLinkLibrary, uma biblioteca de funções executáveis ou dados que podem ser usados
por um aplicativo do Windows. Normalmente, um DLL fornece um ou mais específicos
funções e um programa acessa as funções criando uma estática ou
link dinâmico para o DLL. Um link estático permanece constante durante a execução do programa
enquanto um link dinâmico é criado pelo programa conforme necessário. DLLscan também pode conter
apenas dados. Arquivos DLL geralmente terminam com a extensão .dll, .exe, drv ou .fon. ADLL
pode ser utilizado por várias aplicações ao mesmo tempo. Alguns DLLs são fornecidos
com o sistema operacional Windows e disponível para qualquer aplicativo do Windows.
OutrasDLLs são escritas para uma aplicação específica e são carregadas com o
aplicação.
Mencionamos que um aDLL é criado como um projeto que contém pelo menos um
arquivo de origem e este arquivo de origem deve apresentar um ponto de entrada. Após a criação do
DLL, você irá construir e distribuir para que outros programas possam usá-la. Ao construí-la,
você deve criar um arquivo de biblioteca que acompanhará o DLL. Este arquivo de biblioteca será
usado por outros programas para importar o que está disponível na DLL:
Quando a biblioteca de importação é criada, ela contém informações sobre onde cada um
a função disponível está incluída no DLL e pode localizá-la. Quando um aplicativo
precisa usar uma função contida na DLL, apresenta seu pedido à importação
biblioteca. A biblioteca de importação verifica o DLL para essa função. Se a função existir,
o programa cliente pode usá-lo. Se não o fizer, a biblioteca comunica isso ao
o aplicativo e o aplicativo apresenta um erro.
Fundo
O propósito original dos DLLs era economizar tanto espaço em disco quanto a memória necessária.
para aplicações armazenando-o localmente no disco rígido. Em um não convencional
biblioteca compartilhada, seções de código são simplesmente adicionadas ao programa chamador. Se dois
os programas chamam a mesma rotina, esse código seria duplicado. Em vez disso, qualquer código
que muitas aplicações compartilham poderia ser separado em uma DLL que só existe como
um arquivo de disco único e uma única instância na memória. O uso extensivo de DLLs permitiu
versões iniciais do Windows para funcionar sob condições de memória restrita.
História
Uma grande ênfase tem sido colocada pela Microsoft em manter a compatibilidade de software.
compatibilidade. Para alcançar isso, a Microsoft às vezes chegou até a apoiar
software que estava usando a API de uma maneira não documentada ou até mesmo (programaticamente)
maneira ilegal.
Uma das maiores mudanças que a API do Windows sofreu foi a transição de
Win16 (fornecido no Windows 3.1 e versões anteriores) para Win32 (Windows NT e Windows)
95 e acima). Enquanto o Win32 foi originalmente introduzido com o Windows NT 3.1 e
O Win32s permitiu o uso de um subconjunto Win32 antes do Windows 95, mas isso só aconteceu até
O Windows 95 fez com que muitos aplicativos começassem a ser portados para Win32. Para facilitar a
transição, no Windows 95, tanto para desenvolvedores externos quanto para a própria Microsoft, um
um esquema complexo de API foi utilizado que poderia permitir que código de 32 bits chamasse para 16
código de 32 bits e (em casos limitados) vice-versa. Os chamados thunks planos permitiram código de 32 bits
para chamar bibliotecas de 16 bits, e o esquema foi utilizado extensivamente dentro do Windows
95 para evitar portar todo o sistema operacional para Win32 em um único bloco. No Windows NT,
o SO era puro 32 bits (exceto pelas partes para compatibilidade com aplicações de 16 bits)
e a única thunk disponível era thunks genéricos que apenas thunks de Win16 para
Win32 e funcionou no Windows 95 também. O SDK da Plataforma foi enviado com um
compilador que poderia gerar o código necessário para esses thunks.
Mensagens do Windows
As mensagens são a forma básica que o Windows informa ao seu programa que algum tipo de entrada
ocorreu e você deve processá-lo. Uma mensagem para seu formulário é enviada quando o
o usuário clica em um botão, move o mouse sobre ele ou digita texto em uma caixa de texto. Todos
as mensagens são enviadas juntamente com quatro parâmetros
Mas, quando mensagens são enviadas para você, por que você não as vê, parece que alguém
está roubando sua correspondência. E antes que você fique com raiva o suficiente, deixe-me te contar.
O roubo é na verdade o Seu Aplicativo. Mas ele não rouba seu e-mail, mas sim
Leia para você e te dê apenas o mais importante com uma melhor aparência (com alguns
informação escondida de tempos em tempos). Esta melhor aparência são os eventos que você escreve
código para.
Então, quando o usuário move o mouse sobre seu formulário, o Windows envia
Manipuladores do Windows
Um identificador de janela (geralmente abreviado para hWnd) é um identificador único que o Windows
atribui a cada janela criada. Por janela, neste caso, estamos nos referindo a
tudo, desde botões de comando e caixas de texto, até caixas de diálogo e completas
janelas.
O identificador da janela é usado nas APIs como o único método de identificação de uma janela. Ele
é um valor aLong (4 bytes) e você pode obter o identificador para formulários e quase todos
controles.
O Windows identifica cada formulário, controle, menu, botão e item de menu ou
o que quer que você possa pensar pelo seu identificador. Quando seu aplicativo é executado, cada
o controle nele é atribuído a um manipulador que é usado mais tarde para separar o botão de
o resto dos controles. Se você quiser realizar qualquer operação no botão
através de uma API você deve usar este identificador. Onde obtê-lo? Bem, a API tem
fornecido anhWndproperty para todos os controles que têm manipuladores em Windows.
Serviços Básicos
us/winprog/winprog/graphics_device_interface.asp
Interface do Usuário
Fornece aos aplicativos as caixas de diálogo padrão para abrir e salvar arquivos,
escolhendo cor e fonte, etc. A biblioteca reside em um arquivo chamado [Link] em 16-
bit Windows, e [Link] em Windows de 32 bits. Ele está agrupado sob o Usuário
Categoria de interface da API.
Para mais informações:
[Link]
us/winui/winui/windowsuserinterface/userinput/[Link]
Shell do Windows
us/shellcc/platform/shell/programmersguide/shell_intro.asp
Serviços de Rede
APIs da Web
O navegador web Internet Explorer também expõe muitas APIs que são frequentemente usadas por
aplicações, e como tal poderiam ser consideradas parte da API do Windows. Internet
O Explorer tem sido um componente integrado do sistema operacional desde
Windows 98, e fornece serviços relacionados à web para aplicações. A integração irá
pare com o Windows Vista. Especificamente, ele fornece:
Um controle de navegador da web incorporável, contido em [Link] e [Link].
O serviço de monikers de URL, contido em [Link], que fornece objetos COM para
aplicativos para resolver URLs. Os aplicativos também podem fornecer sua própria URL
manipuladores para outros usarem.
Uma biblioteca para ajudar com suporte a texto multilíngue e internacional
([Link]).
Transformações DirectX, um conjunto de componentes de filtro de imagem.
Visualizador de API
Uma vez que as informações do arquivo do banco de dados tenham sido carregadas, use o Visualizador da API para selecionar
O Objeto Externo
Descrição
Permite que você declare chamadas a procedimentos externos de um link dinâmico externo
biblioteca (DLL).
Sintaxe
[Link]
Argumentos
Parâmetro Descrição
Tipo de dados do valor retornado pelo método. Para tipos de dados disponíveis,
Retorno veja Declare Tipos de Dados na Tabela 1 na página 22
NomeDoMétodo Uma string que pode ser qualquer nome de procedimento válido.
A função EnumChildProc é uma função de callback definida pelo aplicativo usada com
aFunçãoEnumChildWindows.
Dani Vainstein
1
Será expandido no Capítulo COM.
Podemos ver que a função retorna um valor DWORD, de acordo com a Declaração
Tipos de Dados DWORD = micDWord, O segundo argumento é o nome do
função a ser usada no QuickTest
[Link] micDword, "GetIniString"
Agora, o argumento Alias. Para recuperar exatamente o argumento alias, você precisará de
pesquise mais na internet, especialmente sobre declarações de API do Visual Basic.
pode notar na documentação que a função se chama WritePrivateProfileA
e também GetPrivateProfileW, onde A significa ASCII e W significa wide-char
(Unicode). Quando uma função de API tem uma string em um dos argumentos, você precisa
usar a carta do Apost.
[Link] micDword,"GetIniString","[Link]","GetPrivateProfileStringA"
Por último, a lista de argumentos. Você deve prestar atenção em 2 coisas
1. O tipo de dado do argumento
2. A direção do argumento (entrada, saída ou entrada-saída)
LPCTSTR significa: Ponteiro Longo para uma String Constante Terminado em Nulo
LPTSTR significa: Ponteiro Longo para uma string terminada em nulo
significa que ambos são strings, mas a diferença entre eles é a direção
a declaração VB que vemos a última declaração Como Long. Isso significa que o
a função retorna um tipo de dado Long, na tabela de tipos de dados Long=micLong
[Link] micLong
Usando a Função.
A ativação da função deve ser após a declaração da função!
Você pode colocar sua declaração uma linha antes do uso, ou no topo do
ação
Você pode colocar a declaração em uma ação reutilizável Init.
Você pode colocar sua declaração em um arquivo de recurso VBS.
Opção 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 é um bug do QTP. É uma declaração legal em VBS, executar o script não gerará um
erro de tempo de execução
Você deve notar que o tipo BOOL (Boolean) é avaliado como Inteiro e não
Booleano. Assim, 0 (zero) refere-se a Falso e qualquer outro valor a Verdadeiro.
HWND, HDC, HMENU, etc. - e outros tipos como estes. Todos eles começam com
Mão significa MANIVELA, para manivelas de diferentes tipos de objetos.
Por exemplo, HBITMAP é um manipulador de bitmap; HBRUSH é um manipulador de pincel e assim por diante.
não precisará chamar uma função para obter este endereço. Quando você passar seu argumento
Por referência (o padrão), você na verdade passa seu endereço. A coisa a lembrar aqui
se o tipo de parâmetro começar com LP-, você deve passá-lo por referência. Pelo
dessa forma, LPARAM não é um ponteiro. Você deve passar o valor real aqui, então é
passado ByVal.
Há também um tipo estranho NULL. Basta escolher uma maneira de passá-lo quando
necessário. Na maioria dos casos, use ByVal0& para números, Null ou vbNull.
e para strings use vbNullString, para um único caractere use vbNullChar.
VOID é usado para o valor de retorno de funções para especificar que não existe tal valor.
A API não tem Subs, então esta é a maneira como as implementa. Apenas lembre-se
- se o valor de retorno for VOID, use micVoid.
Estruturas ou tipos de dados complexos. Não há como usar esses tipos de dados em
QuickTest via objeto Extern.
Bem, se o valor de retorno for uma estrutura, você pode usar micUnknown, e
manipule isso de alguma forma no seu código, mas, usando API, funções não retornam
estruturas, você deve passar a estrutura ByRef. E aqui está o problema, o
O objeto Extern não pode fazer isso, o VBScript é limitado (sem suporte a API de forma alguma), então, não é
maneira de construir uma Estrutura dentro do QuickTest ou VBS.
Por exemplo, há uma função de API muito útil chamada GetCursorPos, a função
retorna a posição do cursor via a estrutura POINT.
A solução para este problema em Usar classes COM personalizadas pelo usuário.
Claro que você sabe como passar parâmetros, basta colocá-lo na chamada da função e é
feito! Bem, há alguns detalhes que você deve estar ciente ao passar
parâmetros para funções de API.
PorValorPorReferencia. Normalmente, você não precisa se preocupar com essas palavras-chave, já que a API VB
O Visualizador de Texto declara os parâmetros da função conforme a API os deseja e quando você
basta inserir seu valor, ele é passado conforme declarado.
Geralmente, quando um valor é passado por valor, o valor real é passado diretamente para o
função, e quando passadoPorRef, o endereço (ponteiro) do valor é passado.
Passar strings para a função API também não é difícil. A API espera o endereço de
o primeiro caractere da string e lê à frente deste endereço até que chegue a um
Nullcharacter. Parece ruim, mas esta é a forma como o sistema operacional realmente lida com cadeias de caracteres. O
Opção Explícito
[Link] micLong,"GetComputerName","[Link]","GetComputerNameA", _
micString + micByRef, micLong + micByref
Dim sBuffer
Dim nRet, nBuffSize
nBuffSize =255
nRet = [Link](sBuffer, nBuffSize)
Algumas funções também esperam arrays. Aqui está um exemplo. Os últimos dois parâmetros
são arrays de Long. Para passar um array para uma função, você passa apenas o primeiro elemento.
Aqui está um código de exemplo:
Opção Explícita
[Link] micLong,"SetSysColors", user32","SetSysColors", _
micLong, micLong+micByref, micLong+micByref
Privado Const COR_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) = COR_CAPAATIVA
SysColor(1) = COR_CAPTURA_INATIVA
SysColor(2) = COR_TEXTO_CAPTION
SysColor(3) = COR_TEXTO_CAPTION_INATIVO
ColorValues(0) = RGB(58,158,58)'dark green
ColorValues(1) = RGB(93,193,93)'verde claro
0'preto
RGB(126,126,126)'cinza
nRet = [Link](4, SysColor(0), ColorValues(0))
Funções de Retorno
Um callback é uma função que você escreve e diz ao Windows para chamar por algum motivo.
crie sua própria função com um número e tipo de parâmetros especificados, então diga
Janelas para as quais esta função deve ser chamada por algum motivo e seus parâmetros
preenchido com algumas informações de que você precisa. Então o Windows chama sua função, você lida com a
parâmetros e sai da função retornando algum tipo de valor. Um uso típico
de callbacks é para receber um fluxo contínuo de dados do Windows. Este tópico
também não é suportado pelo QuickTest.
Você também pode interagir com seus DLLs personalizados, seus DLLs de aplicativos testados.
Sempre que eles escreviam em VB, C ou C++.
A Biblioteca de Tempo de Execução C da Microsoft tem o nome de arquivo [Link].
Sobrescrita
Fim Função
Ao chamar para Browser( "B" ).Page( "P" ).WebEdit( "WE" ).Set "exemplo"
A função RegisterUserFunc do QTP substitui o método Set do QTP, em vez disso, WebEditSet é chamado.
Chamar fBlink do WebEditSet verificará se o objeto existe, caso contrário, eu receberei um
mensagem de erro no Reporter.
Se o objeto existir, então um processo de piscar ocorrerá durante a execução e imediatamente
a função QTP original é chamada de dentro de WebEditSet
Declarações de API
A Função fBlink
' *****************************************************************************
** fBlink
Destaca um controle número específico de vezes "Vezes
** Todas as funções são API do Windows - Externo deve ser declarado.
' *****************************************************************************
Público Função fBlink(ByRef remetente, ByVal vezes)
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
Apêndice 13.A
micInteger 2 int
micLong 3 longo
micFloat 4 flutuar
micDouble 5 duplo
micString 8 CHAR*
micDispatch nove IDispatch*
micWideString 18 WChar*
micChar 19 caractere
micDesconhecido 20 IUnknown
micHwnd 21 HWND
micVPtr 22 void*
micCurto 23 curto
micPalavra 24 PALAVRA
micDWord 25 DWORD
micByte 26 BYTE
micWParam 27 WPARAM
micLParam 28 LPARAM
micLResultado 29 LRESULT
micByRef h&4000 fora
micUnsigned h&8000 sem sinal
micUChar micChar + micUnsigned unsigned char
micULong micLong + micUnsigned long unsigned
micUShort microfone curto não assinado curto