45 lines
2 KiB
Markdown
45 lines
2 KiB
Markdown
---
|
||
title: "Iniciando o Internet Explorer a partir do PowerBuilder"
|
||
publishdate: 2007-09-21
|
||
tags: ["powerbuilder"]
|
||
slug: iniciando-ie-com-powerbuilder
|
||
---
|
||
|
||
Esta semana tive que iniciar um projeto em que a principal funcionalidade seria executar a partir de um botão em uma window o Internet Explorer na máquina do cliente, abrindo uma determinada URL. Pensei em usar inicialmente a função `Run()`, porém uma das limitações do projeto era que a janela do navegador não poderia ter nenhuma barra de ferramentas disponível (endereço, status, favoritos, etc)
|
||
|
||
Como não é possível iniciar o IE em linha de comando com parâmetros para ocultar essas barras de ferramentas tive que procurar outra solução. Pesquisando dentro da empresa, me sugeriram utilizar um objeto OLE para fazer essa tarefa.
|
||
|
||
Pesquisando no site do MSDN, descobri o objeto [InternetExplorer](https://learn.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa752084(v=vs.85)?redirectedfrom=MSDN) que permite trabalhar com uma instância do IE. Você pode configurar diversas propriedades desse objeto (como exibição das barras de ferramentas, tamanho da janela, etc).
|
||
|
||
Bom, no final fiz o seguinte código (utilizei o PowerBuilder 7) dentro do evento `clicked()` de um botão:
|
||
|
||
```
|
||
OLEObject uo_ie
|
||
uo_ie = CREATE OLEObject
|
||
Integer ii_handleoleobject = -999
|
||
|
||
ii_handleoleobject = uo_ie.ConnectToNewObject("InternetExplorer.Application")
|
||
IF ii_handleoleobject < 0 THEN
|
||
DESTROY uo_ie
|
||
MessageBox('Erro','Não foi ´possível criar o objeto OLE')
|
||
ELSE
|
||
uo_ie.AddressBar = FALSE
|
||
uo_ie.MenuBar = FALSE
|
||
uo_ie.Resizable = FALSE
|
||
uo_ie.StatusBar = FALSE
|
||
uo_ie.ToolBar = FALSE
|
||
uo_ie.Visible = TRUE
|
||
uo_ie.Left = 200
|
||
uo_ie.Top = 200
|
||
uo_ie.Height = 500
|
||
uo_ie.Width = 500
|
||
uo_ie.Navigate(is_urlchamada)
|
||
SetForegroundWindow(uo_ie.HWND)
|
||
END IF
|
||
```
|
||
|
||
Declarando uma função externa (para que a janela recém-criada fique ativada):
|
||
|
||
```
|
||
FUNCTION boolean SetForegroundWindow( long hWnd ) LIBRARY "USER32"
|
||
```
|