Como abrir o navegador pelo progress

De vez em quando aparece um situação onde precisamos abrir um navegador já endereçado pra uma pagina web através de nosso sistema, vou listar abaixo umas maneiras de fazer isso pelo progress.

1º forma de chamar o browser pelo progress

Abrir o navegado via OS-COMMAND, repare que usamos o SILENT, este comando serve para que o prompt de comando não apareça na tela:

OS-COMMAND SILENT ( START "C:\~"Program Files~"\~"Internet Explorer~"\iexplore.exe http:\\www.google.com" ).

(~”Program Files~”) e (~”Internet Explorer~”) servem para usar variáveis de ambiente do windows, porem caso queira usar outro navegador ou passar um patch fixo pode ser usado desta maneira:

OS-COMMAND SILENT VALUE('""C:\Program Files\Internet Explorer\iexplore.exe"  "https://www.google.com/""').

Observe que foram passados pares de aspa dupla no inicio e no fim do do parâmetro, isso acontece porque quando o primeiro caracter é uma aspa dupla o OS-COMMAND remove a primeira e a ultima aspa dupla da linha o que causaria erro.

2º forma de chamar o browser pelo progress

A segunda maneira é com o uso do ACTVEX, vamos uma WINDOW para manipular os eventos.

Na WINDOW criada coloque 2 botões, um para abrir e outro para fechar, no DEFINITIONS declare o objeto a ser usado nas duas rotinas :

DEFINE VARIABLE objExplorer AS COM-HANDLE NO-UNDO.

No botão de abrir coloque o seguinte comando:

/ * Criar o objeto COM e torná-lo visível * /
CREATE "InternetExplorer.Application" objExplorer.
objExplorer:Visible = True.

/ * Passe ao Internet Explorer o endereço da página * /
objExplorer:Navigate("www.google.com.br").

No botão de fechar use os seguintes comandos:

/ * Diga Internet Explorer para sair e limpar * /
NO-RETURN-VALUE objExplorer:Quit().
RELEASE OBJECT objExplorer.

3º forma de chamar o browser pelo progress

Agora veremos um outro exemplo para abrir o navegador, porem desta vez vamos incluir uma validação se o navegador está instalado no sistema, caso não esteja tenta abrir com outro:

DEFINE VARIABLE exeNavegador AS CHARACTER NO-UNDO.
DEFINE VARIABLE cPagina      AS CHARACTER  NO-UNDO.
DEFINE VARIABLE iResultado   AS INTEGER    NO-UNDO.

FILE-INFO:FILE-NAME = "C:\Program Files (x86)".

/* Verifica a pasta "Program Files (x86)" em windows 64Bits */
if FILE-INFO:FULL-PATHNAME <> ? then do:
    /* Verifica se tem chrome instalado */
    FILE-INFO:FILE-NAME = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe".
    if FILE-INFO:FULL-PATHNAME <> ? then
        assign exeNavegador = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe".
    else do:
        /* Verifica se tem o firefox */
        FILE-INFO:FILE-NAME = "C:\Program Files (x86)\Mozilla Firefox\firefox.exe".
        if FILE-INFO:FULL-PATHNAME <> ? then
            assign exeNavegador = "C:\Program Files (x86)\Mozilla Firefox\firefox.exe".
        else do:
            /* Se não tiver outra opção usa o internet explorer */
            FILE-INFO:FILE-NAME = "C:\Program Files (x86)\Internet Explorer\iexplore.exe".
            if FILE-INFO:FULL-PATHNAME <> ? then
                assign exeNavegador = "C:\Program Files (x86)\Internet Explorer\iexplore.exe".
        END.
    END.
END.

if FILE-INFO:FULL-PATHNAME = ?
or exeNavegador = "" then do:
    /* Verifica se tem chrome instalado */
    FILE-INFO:FILE-NAME = "C:\Program Files\Google\Chrome\Application\chrome.exe".
    if FILE-INFO:FULL-PATHNAME <> ? then
        assign exeNavegador = "C:\Program Files\Google\Chrome\Application\chrome.exe".
    else do:
        /* Verifica se tem o firefox */
        FILE-INFO:FILE-NAME = "C:\Program Files\Mozilla Firefox\firefox.exe".
        if FILE-INFO:FULL-PATHNAME <> ? then
            assign exeNavegador = "C:\Program Files\Mozilla Firefox\firefox.exe".
        else do:
            /* Se não tiver outra opção usa o internet explorer */
            FILE-INFO:FILE-NAME = "C:\Program Files\Internet Explorer\iexplore.exe".
            if FILE-INFO:FULL-PATHNAME <> ? then
                assign exeNavegador = "C:\Program Files\Internet Explorer\iexplore.exe".
        END.
    END.
END.

ASSIGN cPagina    = "http://www.google.com.br".

RUN WinExec (INPUT exeNavegador + " " + cPagina , INPUT 1, OUTPUT iResultado).

PROCEDURE WinExec EXTERNAL "KERNEL32.DLL":
    DEFINE INPUT  PARAMETER ProgramName AS CHARACTER.
    DEFINE INPUT  PARAMETER VisualStyle AS LONG.
    DEFINE RETURN PARAMETER StatusCode  AS LONG.
END PROCEDURE.

Detalhes dos parâmetros do WinExec:
ProgramName – Programa a ser executado, no nosso caso passamos o programa + endereço da pagina.
VisualStyle – Forma que o aplicativo vai ser exibido, confira a lista abaixo.
StatusCode – Código retornado caso tenha erro, confira a lista abaixo.

VisualStyle

Valor Significado
0 Esconde a janela e passa para outro ativação janela.
1 Ativa e exibe uma janela. Se a janela é minimizada ou maximizada, o Windows restaura a seu tamanho original e a posição (o mesmo que 9).
2 ativa uma janela e exibe-o como um ícone.
3 ativa uma janela e exibe-lo como maximizada.
4 exibe uma janela em seu ultimo tamanho e posição. A janela que está atualmente ativa permanece ativa
5 ativa uma janela e exibe em seu tamanho e posição atual.
6 Minimiza a janela especificada e ativa a janela de nível superior na lista do sistema.
7 Exibe uma janela como um ícone. A janela que está atualmente ativa permanece ativa.
8 exibe uma janela em seu estado atual. A janela que está atualmente ativo permanece ativo.
9 Ativa e exibe uma janela. Se a janela é minimizada ou maximizada, o Windows restaura a seu tamanho original e a posição (o mesmo que 1).

StatusCode

Valor Significado
0 Sistema estava sem memória, arquivo executável está corrompido, ou localizações era inválida.
2 arquivo não foi encontrado.
3 O caminho não foi encontrado.
5 Tentativa de vincular dinamicamente a uma tarefa, ou  foi um erro de não está compartilhado ou de proteção de rede.
6 Biblioteca de dados com segmentos separados para cada tarefa.
8 Não havia memória suficiente para iniciar o aplicativo.
10 versão do Windows estava incorreta.
11 arquivo executável era inválido. Ou ele não era uma aplicação Windows, ou houve um erro no arquivo .exe.
12 Aplicação foi projetado para um sistema operacional diferente.
13 Aplicação foi projetado para MS-DOS 4.0.
14 Tipo de arquivo executável era desconhecida.
15 Tentativa de carregar um aplicativo de modo real (desenvolvido para uma versão anterior do Windows).
16 Foi feita uma tentativa para carregar um segundo exemplo de um arquivo executável contendo vários segmentos de dados que não foram marcados como somente leitura.
19 Tentativa de carregar um arquivo executável compactado. o arquivo deve ser descompactado antes que possa ser carregado.
20 biblioteca de vínculo dinâmico (DLL) era inválido. Um dos DLLs necessárias para executar esta aplicação era corrupto.
21 Aplicação requer extensões de 32 bits do Microsoft Windows.

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.