sexta-feira, 10 de setembro de 2010

Abrindo e fechando uma página web com o Delphi

É possível executar um browser com WinExec ou ShellExecute para abrir uma página web, mas o que eu vou mostrar aqui é como usar um objeto OLE para criar uma instância de um IE, abrindo ele na página desejada e depois fechando.

Isso pode ser aplicado, por exemplo, em totens ou lan houses onde o acesso ao browser e suas funções, ou até mesmo o acesso a páginas é restrito.

Para isso vamos usar um vetor de 10 posições de variant, mas você pode usar uma lista ou pilha, fique a vontade para usar a imaginação. Esse vetor será responsável por controlar as instâncias do IE abertas e executar operações sobre elas. Você pode fechar na ordem que foi aberto, fechar pelo índice ou fechar todas varrendo o vetor, quando esgotar o tempo do usuário, por exemplo.

Coloque em um formulário um edit (para digitação da url) e dois botões. O código ficará assim:

unit abreFecha;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Comobj;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    IEapp : array[0..9] of variant;
    fIndice : integer;
  public

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if fIndice > 9 then
    exit;
  IEApp[findice] := CreateOLEObject('InternetExplorer.Application');
  IEApp[findice].visible := true;
  IEApp[findice].Top := 0;
  IEApp[findice].Left := 0;
  IEApp[findice].width := screen.width;
  IEApp[findice].height := screen.height;
  IEApp[findice].Navigate(edit1.Text);
  inc(fIndice);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if fIndice = 0 then exit;
  IEApp[findice-1].Quit;
  dec(fIndice);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  fIndice := 0;
end;

end.


Até a próxima dica básica de Delphi ;)

Nenhum comentário:

Postar um comentário

Postagens populares

Marcadores

delphi (60) C# (31) poo (21) Lazarus (19) Site aos Pedaços (15) sql (13) Reflexões (10) .Net (9) Humor (9) javascript (9) ASp.Net (8) api (8) Básico (6) Programação (6) ms sql server (5) Web (4) banco de dados (4) HTML (3) PHP (3) Python (3) design patterns (3) jQuery (3) livros (3) metaprogramação (3) Ajax (2) Debug (2) Dicas Básicas Windows (2) Pascal (2) games (2) linguagem (2) música (2) singleton (2) tecnologia (2) Anime (1) Api do Windows (1) Assembly (1) Eventos (1) Experts (1) GNU (1) Inglês (1) JSON (1) SO (1) datas (1) developers (1) dicas (1) easter egg (1) firebird (1) interfaces (1) introspecção (1) memo (1) oracle (1) reflexão (1)