Fórum Chamar o TurboPower OnGuard a partir de uma DLL #367682
14/01/2009
0
Olá.
Fiz um programa em Delphi que chama minha DLL, também feita em Delphi. Quero que minha [b:3cffd9ac2a]DLL[/b:3cffd9ac2a] chame o OnGuard, não o executável (preciso que a [b:3cffd9ac2a]DLL [/b:3cffd9ac2a]o execute, [u:3cffd9ac2a][i:3cffd9ac2a]sem chances de usar o componente direto no programa[/i:3cffd9ac2a][/u:3cffd9ac2a]).
O que eu já fiz na DLL:
* coloquei as units do OnGuard na uses;
* criei e instancioneio o componente:
* associei uma procedure minha ao evento do componente:
Os parâmetros passados à minha procedure são um TObjeto e um TKey, respectivamente; exatamente a [b:3cffd9ac2a]quantidade [/b:3cffd9ac2a]e [b:3cffd9ac2a]tipo [/b:3cffd9ac2a]solicitados pelo evento do objeto. Contudo, ao compilar o programa, obtenho o seguinte erro:
Acontece que a TGetKeyEvent é declarada assim no OnGuard:
Como eu faço para contornar essa situação? Preciso mesmo usar o componente a partir da DLL.
Grato a todos!
Fiz um programa em Delphi que chama minha DLL, também feita em Delphi. Quero que minha [b:3cffd9ac2a]DLL[/b:3cffd9ac2a] chame o OnGuard, não o executável (preciso que a [b:3cffd9ac2a]DLL [/b:3cffd9ac2a]o execute, [u:3cffd9ac2a][i:3cffd9ac2a]sem chances de usar o componente direto no programa[/i:3cffd9ac2a][/u:3cffd9ac2a]).
O que eu já fiz na DLL:
* coloquei as units do OnGuard na uses;
* criei e instancioneio o componente:
cTOgDaysCode : TOgDaysCode; cTOgDaysCode := TOgDaysCode.Create(Nil);
* associei uma procedure minha ao evento do componente:
cTOgDaysCode.OnGetKey := cTOgDaysCode_OnGetKey(obj_Objeto, var_TKey); procedure cTOgDaysCode_OnGetKey(Sender: TObject; var Key: TKey); begin Key := constante_chave; //Essa constant está declarada e inicializada no escopo da unit da DLL end;
Os parâmetros passados à minha procedure são um TObjeto e um TKey, respectivamente; exatamente a [b:3cffd9ac2a]quantidade [/b:3cffd9ac2a]e [b:3cffd9ac2a]tipo [/b:3cffd9ac2a]solicitados pelo evento do objeto. Contudo, ao compilar o programa, obtenho o seguinte erro:
E2010 Incompatible types: ´TGetKeyEvent´ and ´procedure, untyped pointer or untyped parameter´
Acontece que a TGetKeyEvent é declarada assim no OnGuard:
TGetKeyEvent = procedure(Sender : TObject; var Key : TKey) of object;
Como eu faço para contornar essa situação? Preciso mesmo usar o componente a partir da DLL.
Grato a todos!
Willian
Curtir tópico
+ 0
Responder
Posts
16/01/2009
Woinch
Cara não entendi muito bem a sua situação. OnGuard é um evento de determinado componente? Ele deve estar vinculado a alguma Message, correto? Você não pode utilizar o comando SendMessage na DLL para chamar a execução desse evento?
Espero ter ajudado...
Espero ter ajudado...
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)