Página 2 de 2

Enviado: 13 Dez 2007 16:04
por rodrmigu
Só uma correção nos termos, na linha typedef, é a criação de um tipo de dado baseado em protótipo de função para pointeiro.

:D

[]'s
Rodrigo

Enviado: 13 Dez 2007 16:20
por paulobergo
Ok Rodrigo, ok...

Mais uma vez... grato pela dica...

Observei, já algumas coisas...

A função não gera erro após o "retorno do foco" para o executável clipper se usar StdCall na declaração da função... se usar Export, causa falha...

Mantendo StdCall, outras aplicações (principalmente outras dll's resource feitas nos Delphi 6 ou 4) não consegem chamar as mesmas funções... mas tudo bem... isso é contornável...

O mais importante é que consegui criar uma dll bem simples com um TDatabase e um TQuery para acessar as tabelas MySQL... e até o momento deu certo...

Agora, já querendo explorar um pouquinho mais... como definir outra função em C no bloco?

Mais ou menos assim?

Código: Selecionar todos

#PRAGMA BEGINDUMP 

#include "hbapi.h" 
#include "windows.h" 

typedef LPSTR (WINAPI *_SNADAFAZ)      ( LPSTR snada, INT num ); 

HB_FUNC( NADAFAZ ) 

{ 
    HINSTANCE handle = LoadLibrary("minhadll.dll"); 
    ... conteúdo da função NadaFaz
    } 
} 

#PRAGMA ENDDUMP

Código: Selecionar todos

#PRAGMA BEGINDUMP 

#include "hbapi.h" 
#include "windows.h" 

typedef LPSTR (WINAPI *_SNADAFAZ)      ( LPSTR snada, INT num ); 

HB_FUNC( TUDOFAZ ) 

{ 
    HINSTANCE handle = LoadLibrary("outradll.dll"); 
    ... conteúdo da função TUDOFAZ
    } 
} 

#PRAGMA ENDDUMP


?
Mais uma vez, grato pela atenção!

Abraços!

Enviado: 13 Dez 2007 19:40
por rodrmigu
Ola,

eu coloquei um exemplo completo das rotinas que uso, da uma olhadinha logo no começo deste topico.

[]'s
Rodrigo

Re: Uma luz no fim do túnel?

Enviado: 14 Dez 2007 17:00
por rodrmigu
paulobergo escreveu:C

Código: Selecionar todos

HINSTANCE handle = LoadLibrary("D:\DOWNLOAD\SIA\FAZNADA.DLL"); 
Não funcionou
Em C, tentat fazer assim: D:\\download\\sia\\faznada.dll"

ou passa o nome da .dll como um parametro, dai vc pode passar o path normalmente.

[]'s
Rodrigo