Listar funcoes da DLL

Delphi

28/03/2008

Pessoal,
Bom dia!

Como faço para listar as funcoes existentes em uma DLL.
No caso seria a dll do link abaixo:

http://www.4shared.com/file/42246638/fe7762f2/KEYLIB32.html?dirPwdVerified=75a104ee

Estou tentando acessar o seguinte metodo da DLL:

Procedure pp_encrypt (iinstr: PChar; pwstr: PChar; ret: PChar);



Estou fazendo assim:

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} Procedure pp_encrypt (iinstr: PChar; pwstr: PChar; ret: PChar); stdcall; external ´KeyLib32.dll´; procedure TForm1.Button1Click(Sender: TObject); var ret : PChar; begin pp_encrypt(´marcelo´,´senha´,ret); end; end.


Mas o seguinte erro é retornado:

Project Project1.exe raised exception class EAccessViolation with message ´Access violation at address 004F228 in modulo ´Project1.exe´. Read of address 8d968b77´. Process sotpped. Use Step or Run to continue.


Eu fiz um teste com outra funcao que sei que tem nesta dll:

Function pp_hdserial (drive : PChar): LongInt; stdcall;


e esta funcionou perfeitamente entao estou achando que o outro metodo que estou tentando usar nao existe ou esta declarado de forma diferente. por isso gostaria de listar a funcoes que esta dll tem.

Esta DLL eu peguei na net e nao sei em que linguagem ela foi desenvolvida.


Se alguem puder me ajudar fico grato.

Abs a todos!


Mmoreira

Mmoreira

Curtidas 0

Respostas

Martins

Martins

28/03/2008

Seguinte, ao q parece essa DLL foi feita e Visual C++, e a versão q baixei pelo link é Trial e já expirou, pelo menos foi a mensagem q recebi, outra coisa, pq vc não muda esse código um pouco, vc já tentou usar outro nome para aquela variável.

var 
ret : PChar; 
begin 
pp_encrypt(´marcelo´,´senha´,ret); 
end; 


tipo

var 
 A : PChar; 
begin 
  pp_encrypt(´marcelo´, ´senha´, ret); 
  Edit1.Text := A;
end; 


Algo assim.

Ressalto q não consegui usar a DLL pq é trial e me disse q já expirou.


GOSTEI 0
Mmoreira

Mmoreira

28/03/2008

Martins,
Realmente para usar a DLL tem de instalar a versao trial do pacote que no caso eu instalei e nao recebe a mensagem de expiracao da DLL.
Eu fiz a mudanca que voce sugeriu e mesmo assim tive o mesmo erro.


GOSTEI 0
Martins

Martins

28/03/2008

Martins, Realmente para usar a DLL tem de instalar a versao trial do pacote que no caso eu instalei e nao recebe a mensagem de expiracao da DLL. Eu fiz a mudanca que voce sugeriu e mesmo assim tive o mesmo erro.


Marcelo tá meio complicado então, o código q coloquei anteiormente, esqueci de trocar o Ret por A, mas tudo bem, não tenho o pacote aqui então fica complicado testar para vc.

Mas vamos ver o q está errado no uso da função, pq ela deveria funcionar sem causar estouro.


GOSTEI 0
POSTAR