Ver Mensaje Individual
  #10  
Antiguo 27-06-2012
mweltmeister mweltmeister is offline
Registrado
NULL
 
Registrado: jun 2012
Posts: 7
Reputación: 0
mweltmeister Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Perdón.
Tienes TODA la razón.

Al trabajar con Delphi XE2 hay que cambiar referencias a algunas units.
Cambia Dialogs por VCL.Dialogs y prueba.
Ya me funcionó la compilación, ya lo tengo compilado y ya puedo llamar al .dll; El problema es que no funciona!!

Supongo que es por un error donde dice "var
Use: function(x,y:Integer):integer; stdcall;"
Ya que la función no es esa, la función que quiero utilizar es "StartHook" o algo que la ejecute.

¿Alguna otra idea?
Código:
program Call_suma_dinam;

uses
  Sharemem,
  SysUtils,
  Classes,
  Windows,
  VCL.Dialogs;

{$R *.res}

var
  H: Thandle;
  res:integer;
  Use: function(x,y:Integer):integer; stdcall;
begin

  if (MessageBox(0, '¿Desea cargar la DLL?', '', MB_ICONQUESTION or MB_YESNO) = idNo) then begin
    Exit;
  end;

  H := LoadLibrary('Project1.dll');
  // Cargada correctamente?
  if (H >= 32) then begin
    MessageDlg('Cargada la DLL...', mtInformation, [mbOK], 0);
    sum := nil;
    @sum := GetProcAddress(H, 'StartHook');
    // Asignada?
    if Assigned(sum) then begin
      MessageDlg('Acceso a la función StartHook', mtInformation, [mbOK], 0);
      // llamada
      res := Sum(Starthook);

      MessageDlg(Format('Resultado:  %d+%d=%d',[4,5,res]), mtInformation, [mbOK], 0);
      FreeLibrary(H);
    end;
  end
  else
    MessageDlg('Error, no se ha encontrado SUMAR.DLL', mtError, [mbOk], 0)
 end.
end.
Responder Con Cita