Despu茅s de mucho probar por fin he conseguido que funcione pero usando c贸digo C con #pragma BEGINDUMP/ENDDUMP.
Gracias por tu ayuda, siempre se aprenden cosas.
Y despu茅s de los desvelos la satisfacci贸n de poder "donar" el c贸digo al mundo mundial... aqu铆 os lo dejo:
******************************************************************************
* 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽*
* 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽GetBinaryType 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 *
* 聽 聽 聽 聽https://msdn.microsoft.com/en-us/library/aa364819(VS.85).aspx 聽 聽 聽 *
* 聽Determina el tipo de fichero ejecutable: MS-DOS, 16bits, 32bts, 64bits... *
* 聽 聽 聽 聽 聽 聽 聽 聽 聽 漏 JmGarcia 2016 (BCC7 o VS12 y FHW1602) 聽 聽 聽 聽 聽 聽 聽 聽 聽*
* 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽*
******************************************************************************
#include "FiveWin.Ch"
FUNCTION main()
public cFichero:="",nTipo:=-1
cFichero:=cGetFile("Ficheros (*.exe)|*.exe|Ficheros (*.com)|*.com|Todos (*.*)|*.*","Escoja fichero ejecutable")
cFichero:=alltrim(cFichero)
nTipo:=GetBinaryType(cFichero)
do case
聽 聽case nTipo=0 ; MsgInfo("Ejecutable de 32 bits")
聽 聽case nTipo=1 ; MsgInfo("Ejecutable MS-DOS")
聽 聽case nTipo=2 ; MsgInfo("Ejecutable de 16 bits")
聽 聽case nTipo=3 ; MsgInfo("Ejecutable PIF/MS-DOS")
聽 聽case nTipo=4 ; MsgInfo("Ejecutable POSIX")
聽 聽case nTipo=5 ; MsgInfo("Ejecutable de 16 OS/2")
聽 聽case nTipo=6 ; MsgInfo("Ejecutable de 64 bits")
otherwise
聽 聽MsgInfo("Tipo de fichero/ejecutable desconocido")
endcase
return nil
#pragma BEGINDUMP
#include <windows.h>
#include "hbapi.h"
#include "hbapierr.h"
HB_FUNC( GETBINARYTYPE )
{
聽DWORD dwBinaryType;
聽GetBinaryType(hb_parc(1),&dwBinaryType);
聽hb_retni(dwBinaryType);
}
#pragma ENDDUMPNo descarto conseguir hacer que funcione wrapeando lo de DLL32 FUNCTION...
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013