Updating blog post filenames and publishing very old post

This commit is contained in:
Renne Rocha 2023-08-07 20:47:39 -03:00
parent 044c31e747
commit 8e7ed8c836
9 changed files with 291 additions and 6 deletions

View file

@ -0,0 +1,45 @@
---
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"
```