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
public
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' ;
{$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
public
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.