Artigo Clube Delphi 75 - API do Windows

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (2)  (0)

Artigo da Revista Clube Delphi Edição 75.

Esse artigo faz parte da revista Clube Delphi Edição 75. Clique aqui para ler todos os artigos desta edição

imagem_pdf.jpg

Mão na Massa

API do Windows

Programação com funções nativas do SO

 

Neste artigo utilizaremos alguns dos vários métodos disponíveis na API do Windows, para capturar as mais diversas informações do sistema operacional e das aplicações que nele são executadas. Através da API do Windows podemos realizar as mais diversas tarefas, como: acessar informações de hardware, software, interagir com outros programas, criar objetos, alterar configurações e comportamentos do sistema.

 

Nota: Para o exemplo deste artigo utilizei o Delphi 7 Enterprise e o Windows XP Professional. Dependendo do seu sistema operacional, uma ou outra função do exemplo terá que ser adaptada.

 

Criando a aplicação de exemplo

Abra o Delphi 7 e inicie uma nova aplicação. Altere o nome do formulário para “FrmPrincipal” e salve a unit como “untFrmPrincipal.pas”. Para o arquivo de projeto dê o nome de “API_Windows.dpr”. Adicione alguns componentes visuais e configure-os de acordo com a Figura 1.

 

Figura 1. Layout da aplicação de exemplo em tempo de design

 

A idéia do exemplo é disponibilizar no cbMetodos uma lista pré-definida de opções onde cada uma utilizará métodos da API do Windows para retornar a informação solicitada. Concentraremos vários desses métodos em uma unit separada do formulário, a fim de facilitar seu uso em outros projetos.

Terminado o desenho da tela, vamos iniciar a implementação do código. Selecione o cbMetodos e digite a seguinte lista de opções dentro da sua propriedade Items:

 

<Selecione>

Usuário

Máquina

IP

Sistema Operacional

Processador

Clock

Memória

Janelas abertas

 

Ainda com o componente selecionado, altere sua propriedade ItemIndex para “0”. Dessa forma o primeiro item da lista ficará selecionado por padrão. No evento OnChange do cbMetodos digite o seguinte código:

 

lblInformacao.Caption := '';

lblTitulo.Caption := '';

lblExecutavel.Caption := '';

lbJanelas.Items.Clear;

lvObjetos.Items.Clear;

sbExecutar.Enabled := False;

 

Utilizamos o código anterior para “limpar” as informações dos componentes da tela quando o usuário selecionar uma opção da lista. Antes de implementarmos o botão OK, vamos criar as funções que serão chamadas a partir das opções disponíveis na lista. Crie uma nova unit (File>New>Unit) e salve-a como “untFuncoes.pas”. Logo abaixo da seção interface da nova unit, adicione a cláusula uses e coloque a referência às seguintes units:

 

uses Windows, Dialogs, Classes, SysUtils, Winsock,

  TLHelp32, ComCtrls, Registry, ComObj, Forms;

 

Utilizaremos classes e métodos dessas units em nossas funções de acesso a API do Windows. Muitos dos métodos da API estão mapeados dentro da unit Windows. Antes da seção implementation declare as funções que serão implementadas dentro da unit, conforme a Listagem 1.

 

Listagem 1. Funções para a utilização do exemplo

{ Retorna o IP da máquina corrente }

function RetornarIP: string;

{ Retorna o nome da máquina corrente }

function RetornaNomeDaMaquina: string;

{ Retorna o login do usuário logado }

function RetornarUsuarioLogado: string;

{ Retorna o nome do arquivo executável

  de um aplicativo }

function RetornarNomeExe(const pHandle: hwnd): string;

{ Retorna o nome do processador da máquina corrente }

function RetornarProcessador: string;

{ Retorna a versão do sistema operacional

  da máquina corrente }

function RetornarSO: string;

{ Retorna o clock da máquina corrente }

function RetornarClock: string;

{ Retorna o total de memória da máquina corrente }

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?