Página 2 de 2
COMO EXIBIR NO HARBOUR IMAGEM
Enviado: 21 Jun 2023 14:45
por JoséQuintas
Código: Selecionar todos
FUNCTION DownloadFile( cUrl, cFile )
LOCAL oSoap, cRetorno, lOk
lOk := .F.
BEGIN SEQUENCE WITH __BreakBlock()
oSoap := Win_OleCreateObject( "MSXML2.ServerXMLHTTP" )
oSoap:Open( "GET", cUrl, .F. )
oSoap:Send()
cRetorno := oSoap:ResponseBody()
hb_MemoWrit( cFile, cRetorno )
lOk := .T.
END SEQUENCE
RETURN lOk
COMO EXIBIR NO HARBOUR IMAGEM
Enviado: 21 Jun 2023 15:15
por Abel
Josequintas, coloquei sua funçao e ele nao grava tambem
testei o link com http ou https no navegador funciona, mas no harbour nao.
http://pps.whatsapp.net/v/t61.24694-24/ ... e=64A044F5
seu trocar na sua funcao Responsebody() por Responsetext
ele salva o arquivo jpg com 0 bytes
com responsebody ele nem cria o arquivo jpg
COMO EXIBIR NO HARBOUR IMAGEM
Enviado: 21 Jun 2023 15:54
por JoséQuintas
Testei aqui e também não funciona PRA ESSE LINK.
Pra outros links funciona normalmente.
COMO EXIBIR NO HARBOUR IMAGEM
Enviado: 21 Jun 2023 16:06
por JoséQuintas
Sei lá, alguém de web deve saber.
Talvez algum tipo de proteção ?
Se tentar esse outro link, do src=, acusa timestamp inválido
COMO EXIBIR NO HARBOUR IMAGEM
Enviado: 21 Jun 2023 16:33
por Abel
estranho mesmo JoseQuintas
vou continuar fazendo umas pesquisas, mudei ate o content-type mas nao deu certo.
COMO EXIBIR NO HARBOUR IMAGEM
Enviado: 22 Jun 2023 03:53
por Jairo Maia
Olá Pessoal,
Assim deu certo:
Código: Selecionar todos
#include "hbdyn.ch"
Function Main()
Local cLink, cNomeLogo
/*
Nome que se quer atribuir ao logo
*/
cNomeLogo := "LogoWhatsApp.Jpg"
/*
Link do logo
*/
cLink := "https://pps.whatsapp.net/v/t61.24694-24/56105964_420995091992527_6265685285690933248_n.jpg?ccb=11-4&oh=01_AdTSwFiLkpkkhsCkMNa-3jRKrk-65O_zPKRmVcdWl75n0Q&oe=6499E5B5"
If BaixarLogo( cLink, cNomeLogo ) // tenta baixar...
Hb_Run( "LogoWhatsApp.Jpg" ) // para teste, se tem aplicativo vinculado com .Jpg, vai abrir a figura...
Else
Hb_Alert( "Download do logo falhou..." )
EndIf
Return Nil
/*
Baixar logotipo do site whatsapp...
*/
Func BaixarLogo( cLink, cNomeLogo )
Local nHandleDLL, nStatus
nHandleDLL:=HB_LibLoad("UrlMon.dll")
nStatus:=HB_DynCall( { "URLDownloadToFileA", nHandleDLL, HB_DYN_CALLCONV_STDCALL}, 0, clink, cNomeLogo, 0, 0 )
hb_LibFree( nHandleDLL )
Return ( nStatus = 0 )
COMO EXIBIR NO HARBOUR IMAGEM
Enviado: 22 Jun 2023 09:37
por JoséQuintas
Se não me engano, faltou aí no final o hb_LibFree()
COMO EXIBIR NO HARBOUR IMAGEM
Enviado: 22 Jun 2023 10:30
por Jairo Maia
JoséQuintas escreveu:Se não me engano, faltou aí no final o hb_LibFree()
Não se enganou não, faltou mesmo
Corrigi, acrescentei no final a função:
hb_LibFree( nHandleDLL )
COMO EXIBIR NO HARBOUR IMAGEM
Enviado: 22 Jun 2023 15:01
por Abel
deu tudo certo !!
passando para agradecer a todos desse forum e especificamente ao Jose Quintas e Jairo Maia
por me ajudarem tanto na exibiçao do JPG devido ao conflitos que eu tinha no meu sistema wvt x wvg
quanto no download do jpg usando DLL, pois ja havia tentado muitas solucoes que nao deram certo.
Muito Obrigado mesmo !
ABEL
COMO EXIBIR NO HARBOUR IMAGEM
Enviado: 03 Jul 2023 22:07
por Abel
Josequintas, percebi na rotina anterior que exibe a foto jpg que esta sendo aberta em uma janela
separada do sistema (como eu quero nesse momento), se move a janela com o mouse a foto some e a
janela fica toda preta, sabe o que pode ser ?
Código: Selecionar todos
PROCEDURE EXIBE_JPG(rA_TITULO, rA_ARQJPG)
hGtAnt := hb_gtSelect()
//
HB_GTRELOAD("WVG")
SETMODE(24,35)
//
SET COLOR TO 'W*/N'
CLS
HB_GtInfo( HB_GTI_WINTITLE, rA_NOME )
wvt_DrawImage( 1, 0, 18, 34, rA_ARQJPG )
SET CURSOR OFF
DO WHILE .T.
INKEY(0.01)
//
IF LASTKEY()=27
EXIT
ENDIF
ENDDO
//
Hb_gtSelect( hGtAnt )
RETURN
Desde ja agradeço.
COMO EXIBIR NO HARBOUR IMAGEM
Enviado: 03 Jul 2023 22:42
por ANDRIL
Olá Abel, tente conforme abaixo, assim a cada ciclo recarrega a imagem.
Código: Selecionar todos
SET CURSOR OFF
DO WHILE .T.
wvt_DrawImage( 1, 0, 18, 34, rA_ARQJPG )
INKEY(0.01)
//
IF LASTKEY()=27
EXIT
ENDIF
ENDDO
COMO EXIBIR NO HARBOUR IMAGEM
Enviado: 04 Jul 2023 11:15
por Abel
ANDRIL, era isso que eu queria evitar,
fazer a exibicao em loop no do while e como nao entendo muito de WVG e nem WVT talvez
tenha um jeito melhor.
Obrigado,
ABEL
COMO EXIBIR NO HARBOUR IMAGEM
Enviado: 04 Jul 2023 14:23
por ANDRIL
Abel tenho usado assim e me atende. Mas tem outra forma que em tese faz loop interno nos objetos.
Código: Selecionar todos
caminhod="C:"
cLogo= padr("C:\SEMFOTO.JPG",60)
do while .t.
aPaint:={}
if file(alltrim(cLogo))
Wvt_DrawImage( 06, 30, 12, 50, alltrim(cLogo) )
AaDd( aPaint, { Nil, {|| Wvt_DrawImage( 06, 30, 12, 50, alltrim(cLogo) ) }, Nil } )
endif
AaDd( aPaint, { Nil, {|| Wvt_DrawBoxRaised( 06, 30, 12, 50 ) }, Nil } )
WvtSetPaint( aPaint )
@15,01 say "Arquivo de Logo: " get cLogo pict"@!"
read
if lastkey()=27
exit
endif
enddo
aPaint:={}
WvtSetPaint( aPaint )
Wvg_ClearGUIObjects()
return
Seria mais ou menos isso, tentei extrair de um código mais complexo. Não sei se vai compilar.
COMO EXIBIR NO HARBOUR IMAGEM
Enviado: 04 Jul 2023 16:54
por Abel
Ola, Andril
fiz uma solucao mecanica, pedindo ao usuario pressionar F9 quando mexer na janela e a imagem sumir.
obrigado pela dica tambem.
Código: Selecionar todos
PROCEDURE EXIBE_JPG_EM_JANELA(rA_ARQJPG,rA_NOME)
LOCAL hGTaNT, rN_LINANTES, rN_COLANTES, rN_ACAO
//
hGtAnt := hb_gtSelect()
//
HB_GTRELOAD("WVG")
SETMODE(24,35)
//
SET COLOR TO 'W*/N'
CLS
HB_GtInfo( HB_GTI_WINTITLE, rA_NOME )
//
SET CURSOR OFF
@ 08,07 SAY ' A foto sumiu porque '
@ 09,07 SAY ' mexeu na janela. '
@ 11,07 SAY ' F9-Exibe novamente '
//
wvt_DrawImage( 1, 0, 18, 34, rA_ARQJPG )
//
// AGUARDA ATE CLICAR EM QUALQUER LUGAR DA TELA OU MUDAR O FOCO DA JANELA FECHANDO A JANELA DA FOTO DE FORMA AUTOMATICA
//
rN_ACAO=0 // 0=NAO FAZ NADA 1=SALVAR 2=EXCLUIR
rN_COLANTES=0
rN_LINANTES=0
//
DO WHILE .T.
INKEY(0.01)
//
IF LASTKEY()=-8 // F9
wvt_DrawImage( 1, 0, 18, 34, rA_ARQJPG )
elseif LASTKEY()=27
exit
endif
enddo
Hb_gtSelect( hGtAnt )
return