Page 2 of 2

Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits

PostPosted: Sat Jul 13, 2013 5:46 pm
by Antonio Linares
Esté código funciona bien en FWH 64, lo que descarta que sea un problema de Adobe en 64 bits:

Code: Select all  Expand view
#include "FiveWin.ch"

function Main()

   ShellExecute( 0, "open", hb_CurDrive() + ":\" + CurDir() + "\fwintro.pdf" )

return nil

#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>

HB_FUNC( SHELLEXECUTE )
{
   hb_retnll( ( HB_LONGLONG ) ShellExecute( ( HWND ) hb_parnll( 1 ),
              hb_parc( 2 ), hb_parc( 3 ), hb_parc( 4 ), hb_parc( 5 ), hb_parnl( 6 ) ) );  
}

#pragma ENDDUMP

Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits

PostPosted: Sat Jul 13, 2013 7:47 pm
by fgondi
Sobre 32 bits uso esto:
Code: Select all  Expand view

    oPdf := TActiveX():New( oWndPdf, "AcroPDF.PDF.1" )  
    oWndPdf:oClient := oPdf

    oPdf:Do( "SetPageMode", "thumbnail and pages" )
    oPdf:SetProp( "Src", cTmp )
    oPdf:Do( "LoadFile", Lfn2Sfn(cTmp) )   //Lfn2Sfn( cFileNew )
    oPdf:Do( "GetVersions" )
    oPdf:Do( "SetCurrentPage", 1 )
    oPdf:Do( "SetShowToolbar", .F. )
 


Y funciona correctamente, con las versiones anteriores y con la versión 13.06.

En el ejemplo que propones, aparece un error con caracteres muy raros tanto en la versión de 32 como en la versión de 64 en la siguiente línea
oActiveX : LoadFile( "fwintro.pdf" )

Re: FHW64 llamadas a DLL/COM/ACTIVEX 32 bits

PostPosted: Sat Jul 13, 2013 8:54 pm
by Antonio Linares
Fernando,

Estoy revisando los fuentes de la Clase THActiveX y aunque he creado una nueva función AsLongLong()
y he modificado AsPtr() para que soporte 64 bits, el código sigue fallando.

Revisando el código de Harbour he caido en la cuenta de que como el soporte de ActiveX de Harbour está
basado en "AtlAxWin" (atl.dll) que tal vez para 64 bits esos nombres sean diferentes.

Estoy buscando en google por si encuentro algun comentario que relacione AtlAxWin ó Atl.dll con 64 bits.