FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour FHW64 llamadas a DLL/COM/ACTIVEX 32 bits
Posts: 694
Joined: Fri Oct 07, 2005 06:58 AM
FHW64 llamadas a DLL/COM/ACTIVEX 32 bits
Posted: Fri Jul 12, 2013 07:49 AM
Hola amigos,

Alguien sabe si se puede?
Ya he intentado introducir en el registro las claves para DllSurrogate. Pero sigue sin funcionar.
http://www.gfi.com/blog/32bit-object-64bit-environment/

Es que no consigo que funcione ni el Acrobat pdf.
Sin embargo si se comunica con excel 2010 de 32bit.

En otro 谩mbito:
He probado FreeImage64.dll y sobre windows 8 no funciona. En concreto he probado "Samples\Ribbon2.prg"
Un saludo

Fernando Gonz谩lez Diez

ALSIS Sistemas Inform谩ticos
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits
Posted: Fri Jul 12, 2013 10:01 AM
Fernando,

Una aplicaci贸n de 64 bits no puede llamar a c贸digo en 32 bits de forma directa, sencillamente porque se ejecutan en espacios diferentes: las aplicaciones de 32 bits en Windows 64 se ejecutan en WOW64 (Windows on Windows), de manera parecida a como las aplicaciones de 16 bits pueden funcionar en Windows 32 (WOW).

Al hablar de objetos COM, la situaci贸n es diferente, puesto que la llamada no es "directa", sino que que la capa de OLE de Windows, permite la conversaci贸n:
http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/

De todas formas, la soluci贸n m谩s f谩cil es disponer de versiones de 64 bits de las DLLs que usemos
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 694
Joined: Fri Oct 07, 2005 06:58 AM
Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits
Posted: Fri Jul 12, 2013 11:19 AM

Antonio, gracias.

Entonces, debo entender que si se pude llamar a los objetos COM?

Os funciona el ejemplo "Samples\pdf.prg"? a mi me da error en la aplicaci贸n.

De la clase FreeImage64.dll, tengo que cambiar algo?

Un saludo

Fernando Gonz谩lez Diez

ALSIS Sistemas Inform谩ticos
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits
Posted: Fri Jul 12, 2013 12:26 PM

Fernando,

samples\testimg.prg est谩 funcionando bien aqui y usa FreeImage64.dll

En cuanto a pdf.prg aqui falla tambien. Posiblemente no sea compatible con los 64 bits. Voy a google... :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits
Posted: Fri Jul 12, 2013 12:29 PM

Fernando,

Que versi贸n de Windows est谩s usando ?

Aqui en Windows 8 64 bits es que pdf.prg ni siquiera funciona en 32 bits...

La pesadilla de los componentes externos... :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits
Posted: Fri Jul 12, 2013 12:30 PM

En Windows 8 64 cambiandole de TActiveX a THActiveX crea el objeto en 32 bits pero no admite oActiveX:SetCurrentPage( 1 ) ni oActiveX:SetCurrentPage = 1

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits
Posted: Fri Jul 12, 2013 02:02 PM

En Windows 7 64 samples\pdf.prg arranca bien, aun asi parece que tengo que actualizar el pdf reader de Acrobat

Como ves, nos estamos encontrando con diferencias que vienen del propio Windows o del propio componente Acrobat. A esto me refiero con los problemas de los componentes externos. Nosotros no hemos cambiado nuestro EXE, pero el comportamiento de nuestra aplicaci贸n cambia seg煤n la versi贸n de Windows o la versi贸n instalada del componente.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 694
Joined: Fri Oct 07, 2005 06:58 AM
Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits
Posted: Sat Jul 13, 2013 01:34 PM

Muchas gracias Antonio. Seguir茅 investigando

Cuanto largo y tendido podr铆amos hablar de lo conveniente que es usar componentes externos :lol:
Ojala alg煤n d铆a podamos tener esta conversaci贸n

En este caso caso estamos hablando de Windows y de Acrobat Reader. Los 2 son bastantes usados por casi todo el mundo.
En otros componentes lo entiendo, pero en estos 2 no me digas que porque se actualizan y cambian la culpa es de ellos :D
Son la base de muchos sistemas, y si ellos cambian, nosotros nos adaptaremos, desgraciadamente ellos (por windows) ponen las reglas del juego.

Otro ejemplo puede ser FWH, no siempre al recompilar todos nuestros fuentes con la nueva versi贸n de FWH funciona sin mas.
A veces hay que hacer retoques en el sistema para que pueda funcionar.
Por ejemplo en la versi贸n 13.06 se incluye que xbrowse s贸lo se ordena si se defiene lAutoSort a True.

Es lo que tiene la evoluci贸n. :wink:

Un saludo

Fernando Gonz谩lez Diez

ALSIS Sistemas Inform谩ticos
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits
Posted: Sat Jul 13, 2013 04:27 PM
Fernando,

Tienes toda la raz贸n en que el lector de PDFs de Acrobat es muy importante en las aplicaciones y que por supuesto tenemos que encontrarle la forma de que funcione bien.

La idea de los componentes externos es realmente buena, el problema es que en la pr谩ctica los distintos modelos que se han ido implementando han tenido muchos fallos de dise帽o. Si el uso de las DLLs, o de los ActiveX, etc. fuese algo robusto, no aparecer铆an GPFs, o errores (con poca documentaci贸n para entender porque el error ocurre y no la descripci贸n del error en si). Pero bueno, tienes raz贸n tambien, no nos queda otra que usar lo que Microsoft ofrece :-)

En Windows 7 64, pdf.prg se ejecuta bien asi:
Code (fw): Select all Collapse
#include "FiveWin.ch"

function Main()

   local oWnd, oActiveX

   DEFINE WINDOW oWnd TITLE "FiveWin ActiveX Support"

   oActiveX = THActiveX():New( oWnd, "AcroPDF.PDF.1" ) // Use "AcroPDF.PDF.1" for Acrobat Reader 7 

   oWnd:oClient = oActiveX // To fill the entire window surface

   oActiveX:LoadFile( "fwintro.pdf" )
   // oActiveX:SetCurrentPage( 1 )

   ACTIVATE WINDOW oWnd 

return nil

Pero en la ventana aparece una p谩gina web que intenta acceder a res://ieframe.dll/navcancl.htm#http://acropdf.pdf.1/ pero como en el nombre aparece navcanl (abreviatura de navigation cancelled?) puede ser que intentase acceder a otra. De donde sale esa p谩gina web ? voy a buscarlo en google...
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits
Posted: Sat Jul 13, 2013 04:43 PM

Nada, casi no hay resultados.

En 32 bits, no muestra esa p谩gina web sino una ventana gris oscura. He probado a hacerle Hide() y el control est谩 ahi,
pero no muestra nada, solo una imagen gris.

Da la impresi贸n de que a partir de esta versi贸n en curso de Acrobat Reader, el c贸digo que antes us谩bamos y que funcionaba bien, ya no funciona. Y a partir, de aqui, se aceptan sugerencias, ideas... (a este punto es al que me refiero con el tema
de los "componentes externos". Que c谩mino seguir a partir de aqui salvo buscar en google y encomendarse a todos los santos :-) ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits
Posted: Sat Jul 13, 2013 04:51 PM

Hay alg煤n usuario de FWH que est茅 usando el ActiveX "AcroPDF.PDF.1" ?

En caso afirmativo, podr铆an especificar que versiones usan de FWH, Harbour/xHarbour y compilador de C ? gracias :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits
Posted: Sat Jul 13, 2013 05:06 PM

Con FWH 32 he probado a hacer esta llamada:

oActiveX:Print()

y se muestra la caja de di谩logo de Windows de selecci贸n de nombre de fichero y el fichero se genera (aunque su contenido es err贸neo).

El hecho de que responda al mensaje Print() quiere decir que el objeto esta creado y que responde a nuestros mensajes.

La pregunta es, por qu茅 se muestra en gris y no aparece nada m谩s ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits
Posted: Sat Jul 13, 2013 05:20 PM
Bueno, son贸 la flauta. Asi funciona en 32 bits :-)

Code (fw): Select all Collapse
#include "FiveWin.ch"

function Main()

聽 聽local oWnd, oActiveX

聽 聽DEFINE WINDOW oWnd TITLE "FiveWin ActiveX Support"

聽 聽oActiveX = TActiveX():New( oWnd, "AcroPDF.PDF.1" ) // Use "AcroPDF.PDF.1" for Acrobat Reader 7 

聽 聽oWnd:oClient = oActiveX // To fill the entire window surface

聽 聽oActiveX : src = hb_CurDrive() + ":\" + CurDir() + "\fwintro.pdf"
聽 聽oActiveX:GotoFirstPage()

聽 聽ACTIVATE WINDOW oWnd

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits
Posted: Sat Jul 13, 2013 05:28 PM

En FWH 64 bits, usando la Clase THActiveX (basada en el propio soporte de ActiveX de Harbour) aparece el error que src no es una data v谩lida: ("no exported variable"), y usando la Clase TActiveX genera GPF...

regards, saludos

Antonio Linares
www.fivetechsoft.com