Page 1 of 1

Abrir explorador internet con una variable como URL

Posted: Thu Feb 21, 2019 3:06 pm
by mterraz
Estimados colegas,
Estoy trabajando con una programa que debe leer una variable y abrir un internet explorer con la direccion obtenida que es dinamica en mi caso.

Debajo dejo un ejemplo de lo que estoy intentando ejecutar.

STATIC oWnd // ya esta definida en mi programa

FUNCTION TEST()
Local cIp,cCadena

cIp:='192.168.0.253' // esta dirección la obtengo consultando un impresor fiscal en linea sin problemas

// TEST 1 no funciona
cCadena:='http://' +cIp

ShellExecute( oWnd:hwnd,'open', cCadena )

// TEST 2 no funciona
cCadena:=('http://' +cIp)

ShellExecute( oWnd:hwnd,'open','"'+cCadena+'"')

// TEST 3 funciona pero con un valor fijo, no utilizo la variable
ShellExecute( oWnd:hwnd,'open','http://192.168.0.253')

RETU .T.

El resultado es la apertura del internet explorer pero sin ninguna dirección en la barra de dirección, por lo tanto no muestra nada, deberia mostrar la interface del impresor que esta disponible en http://192.168.0.253

Muchas gracias por su ayuda,
Saludos cordiales Mariano

Re: Abrir explorador internet con una variable como URL

Posted: Thu Feb 21, 2019 9:38 pm
by cmsoft
Hola Mariano:
Modifique el ejemplo que viene con Fivewin, testurl.prg, y le puse un boton que llame a la funcion ShellExecute, y funciona bien.
Verificaste bien que la oWnd esta definida?
Te copio el ejemplo para que lo pruebes

Code: Select all

#include "FiveWin.ch"
#include "URLLink.ch"

#define COLOR_BTNFACE  15

//----------------------------------------------------------------------------//

function Main()

   local nColor := GetSysColor( COLOR_BTNFACE )
   local oDlg, oFont, oFnt1, oFnt2, oBmp

   DEFINE FONT oFont NAME GetSysFont() SIZE 0, -12
   DEFINE FONT oFnt1 NAME "ARIAL" SIZE 0, -20 BOLD
   DEFINE FONT oFnt2 NAME "ARIAL" SIZE 0, -14 BOLD

   DEFINE DIALOG oDlg RESOURCE "Main" FONT oFont

   REDEFINE BITMAP oBmp ID 301 OF oDlg RESOURCE "Fivewin"

   oBmp:cToolTip := "Logotipo de Fivewin"

   REDEFINE SAY ID 101 PROMPT "FW/FWH/FW++/FWC3" FONT oFnt1 ;
            COLOR CLR_BLACK, nColor OF oDlg

   REDEFINE SAY ID 102 PROMPT "Fivetech © 1993-2004" FONT oFnt2 ;
            COLOR CLR_MAGENTA, nColor OF oDlg

   REDEFINE SAY ID 103 ;
            PROMPT "La mejor librería para crear con CA-Clipper " + ;
                   "auténticas aplicaciones Windows. Es muy fácil " + ;
                   "de usar y los resultados son excelentes. " + ;
                   "Visite la página oficial de Fivewin:" ;
            FONT oFont OF oDlg

   REDEFINE URLLINK ID 104 URL "www.fivetechsoft.com" OF oDlg ;
            TOOLTIP "Sitio oficial de FiveTech"

   REDEFINE SAY ID 105 ;
            PROMPT "Fivewin para Harbour le ofrece el poder de " + ;
                   "los 32 bits. Además, ya está disponible FW " + ;
                   "para el nuevo compilador C3. " + ;
                   "Contacte con nosotros enviando un e-mail a:" ;
            FONT oFont OF oDlg

   REDEFINE URLLINK ID 106 URL "mailto:alinares@fivetechsoft.com" OF oDlg ;
            TOOLTIP "E-mail de FiveTech"


   REDEFINE BUTTON ID 201 ACTION (ShellExecute( oDlg:hwnd,'open','http://192.168.0.1'), oDlg:End() ) //Aca abro en mi casa, el router

   oDlg:lHelpIcon := .f.

   ACTIVATE DIALOG oDlg CENTER ;
            VALID ( oFont:End(), oFnt1:End(), oFnt2:End(), .t. )

return nil

//----------------------------------------------------------------------------//

Re: Abrir explorador internet con una variable como URL

Posted: Mon Feb 25, 2019 3:13 pm
by mterraz
Hola Cesar,
Estuve analizando y el error lo tenia en la cadena que recibo desde el impresor fiscal, viene con _ especiales de separador de campos que me estaban modificado la cadena del IP y por eso no funcionaba..

#define SE chr(28)

CallDll32 ( 'MandaPaqueteFiscal' , 'WINFIS32.DLL' , nHandler , CHR(163) )
CallDll32 ( 'UltimaRespuesta' , 'WINFIS32.DLL' , nHandler , @cRta )
cRta:= StrToken(cRta,3, SE )
? cRta // esta OK ahora

s:= 'http://'+ cRta
ShellExecute( 0,'OPEN', s ,'','', 1 ) // FUCIONA OK

Muchas gracias por tu tiempo y ayuda,
Saludos cordiales,
Mariano