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:
- Code: Select all Expand view RUN
- ******************************************************************************
* *
* 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 ENDDUMP
No descarto conseguir hacer que funcione wrapeando lo de DLL32 FUNCTION...