Ver Mensaje Individual
  #7  
Antiguo 19-05-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
ElDuc,

Cita:
Empezado por ElDuc
...necesito gestionar la información que el programa pasa a la DLL en los parámetros y hacer un seguimiento visual del funcionamiento pero...las DLL son procesos no visuales...


Revisa este código:
Código Delphi [-]
unit DLLUnit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
   ModalResult := mrOk;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
   ModalResult := mrCancel;
end;

end.
Código Delphi [-]
library DLLForm;

uses
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  DLLUnit1 in 'DLLUnit1.pas' {Form1};

{$R *.res}

function DLLFormParameters(S1 : Pchar;
                           I1 : Integer;
                           L1 : LongWord;
                           D1 : Double;
                           DT1 : TDateTime) : TModalResult; Stdcall;
var
   F : TForm1;

begin

   F := TForm1.Create(nil);

   with F do
   begin

      ListBox1.Clear;
      ListBox1.Items.Add(S1);
      ListBox1.Items.Add(IntToStr(I1));
      ListBox1.Items.Add(IntToStr(L1));
      ListBox1.Items.Add(FloatToStr(D1));
      ListBox1.Items.Add(DateTimeToStr(DT1));

      if F.ShowModal = mrOk then
         Result := mrOk
      else
         Result := mrCancel;
        
   end;

   F.Free;

end;

exports
   DLLFormParameters;

begin
end.
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  function DLLFormParameters(S1 : PChar;
                             I1 : Integer;
                             L1 : LongWord;
                             D1 : Double;
                             DT1 : TDateTime) : TModalResult; Stdcall; External 'DLLForm.dll';

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
   S1 : PChar;
   I1 : Integer;
   L1 : LongWord;
   D1 : Double;
   DT1 : TDateTime;

begin

   S1 := 'Test de envió de parámetros a un Form en un DLL';
   I1 := MaxInt;
   L1 := High(LongWord);
   D1 := 3.1415927;
   DT1 := Now;

   if DLLFormParameters(S1,I1,L1,D1,DT1) = mrOk then
      MessageDlg('DLLFormParameters Ok',mtInformation,[mbOK],0)
   else
      MessageDlg('DLLFormParameters Cancel',mtError,[mbOK],0)

end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, Implementa una DLL con un formulario que visualiza los parámetros enviados a esta, como se muestra en la siguiente imagen:



El código del ejemplo esta disponible en : DLLForm.rar

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 20-05-2015 a las 16:11:17.
Responder Con Cita