Estou tentando utilizar a Dll libsatid.dll StdCall do Sat Control ID, mas as funções retornam sempre em branco.
Compilei um pequeno exemplo na pasta C:\MiniGUI\SAMPLES\BASIC\CallDll só com a função ConsutarSat em 3 dll de fabricantes diferentes, utilizando 3 métodos
nos 3 métodos de comunicação com a Dll.
Entrei em contato com o suporte técnico da Control ID, mas eles não estão conseguindo me orientar, informaram que tem 2 arquivos Includes na pasta
da biblioteca deles, mas quando adiciono os 2 includes, dá erro na compilação pela falta do arquivo cstdint
Não consegui anexar as Dll aqui, o gmail bloqueia, o exemplo abaixo com as 3 Dll é apenas com a função ConsultarSat de 3 Dll de fabricantes diferentes, se alguém puder me orientar, o que está faltando pra funcionar, eu agradeço muito.
/*
* MiniGUI DLL Demo
*/
#include "
minigui.ch"
#include "
hbdyn.ch"
*#include "satidlibconf.h"
*#include "SATiD.h"
Procedure Main
DEFINE WINDOW Win_1 ;
AT 0,0 ;
WIDTH 400 ;
HEIGHT 400 ;
TITLE 'SAT Control ID (STDCALL)' ;
MAIN ;
ON RELEASE UnloadAllDll()
DEFINE MAIN MENU
DEFINE POPUP 'Consultas'
MENUITEM 'Consultar libsatid.dll Método1' ACTION Control_Consulta1()
MENUITEM 'Consultar libsatid.dll Método2' ACTION Control_Consulta2()
MENUITEM 'Consultar libsatid.dll Método3' ACTION Control_Consulta3()
MENUITEM 'Consultar BemaSAT32.dll Método1' ACTION Bema_Consulta1()
MENUITEM 'Consultar BemaSAT32.dll Método2' ACTION Bema_Consulta2()
MENUITEM 'Consultar BemaSAT32.dll Método3' ACTION Bema_Consulta3()
MENUITEM 'Consultar GERSAT.dll Método1' ACTION Ger_Consulta1()
MENUITEM 'Consultar GERSAT.dll Método2' ACTION Ger_Consulta2()
MENUITEM 'Consultar GERSAT.dll Método3' ACTION Ger_Consulta3()
END POPUP
END MENU
END WINDOW
ACTIVATE WINDOW Win_1
Return
Procedure Control_Consulta1()
Local cString := ' '
Local aString := {}
cString := HMG_CallDLL ( "libsatid.dll" , HB_DYN_CTYPE_CHAR_PTR , "ConsultarSAT" , Random(999999) )
MSGINFO(cString,'Retorno Dll')
Return
Procedure Control_Consulta2()
Local cString := ' '
Local aString := {}
cString := hb_DynCall( { "ConsultarSAT", "libsatid.dll" , HB_DYN_CTYPE_CHAR_PTR } , Random(999999) )
MSGINFO(cString,'Retorno Dll')
Return
Procedure Control_Consulta3()
Local cString := ' '
Local aString := {}
cString := CIDSATCONSULTAR( Random(999999) )
MSGINFO(cString,'Retorno Dll')
Return
Procedure Bema_Consulta1()
Local cString := ' '
Local aString := {}
cString := HMG_CallDLL ( "BemaSAT32.dll" , HB_DYN_CTYPE_CHAR_PTR , "ConsultarSAT" , Random(999999) )
MSGINFO(cString,'Retorno Dll')
Return
Procedure Bema_Consulta2()
Local cString := ' '
Local aString := {}
cString := hb_DynCall( { "ConsultarSAT", "BemaSAT32.dll" , HB_DYN_CTYPE_CHAR_PTR } , Random(999999) )
MSGINFO(cString,'Retorno Dll')
Return
Procedure Bema_Consulta3()
Local cString := ' '
Local aString := {}
cString := BEMASATCONSULTAR( Random(999999) )
MSGINFO(cString,'Retorno Dll')
Return
Procedure Ger_Consulta1()
Local cString := ' '
Local aString := {}
cString := HMG_CallDLL ( "GERSAT.dll" , HB_DYN_CTYPE_CHAR_PTR , "ConsultarSAT" , Random(999999) )
MSGINFO(cString,'Retorno Dll')
Return
Procedure Ger_Consulta2()
Local cString := ' '
Local aString := {}
cString := hb_DynCall( { "ConsultarSAT", "GERSAT.dll" , HB_DYN_CTYPE_CHAR_PTR } , Random(999999) )
MSGINFO(cString,'Retorno Dll')
Return
Procedure Ger_Consulta3()
Local cString := ' '
Local aString := {}
cString := GERSATCONSULTAR( Random(999999) )
MSGINFO(cString,'Retorno Dll')
Return
#pragma BEGINDUMP
#include <hbapi.h>
#include <windows.h>
typedef LPSTR (WINAPI *_CONSULTARSAT) ( INT nRandom );
HB_FUNC( CIDSATCONSULTAR )
{
HINSTANCE handle = LoadLibrary( "libsatid.dll" );
if (handle)
{
_CONSULTARSAT pFunc;
pFunc = (_CONSULTARSAT) GetProcAddress(handle, "ConsultarSAT");
hb_retc( ( LPSTR ) pFunc(hb_parni(1)) );
FreeLibrary( handle );
}
}
HB_FUNC( BEMASATCONSULTAR )
{
HINSTANCE handle = LoadLibrary( "BemaSAT32.Dll" );
if (handle)
{
_CONSULTARSAT pFunc;
pFunc = (_CONSULTARSAT) GetProcAddress(handle, "ConsultarSAT");
hb_retc( ( LPSTR ) pFunc(hb_parni(1)) );
FreeLibrary( handle );
}
}
HB_FUNC( GERSATCONSULTAR )
{
HINSTANCE handle = LoadLibrary( "GERSAT.dll" );
if (handle)
{
_CONSULTARSAT pFunc;
pFunc = (_CONSULTARSAT) GetProcAddress(handle, "ConsultarSAT");
hb_retc( ( LPSTR ) pFunc(hb_parni(1)) );
FreeLibrary( handle );
}
}
#pragma ENDDUMP
***************************************************************
Amauri S. Oliveira