DLL向主程序发消息

1.DLL 工程单元代码
library Project2;

uses
  Windows, Messages;

const
  MY_MSG = WM_USER + 101;

{$R *.res}

procedure LoadDLL(const AHandle: Pointer); stdcall;
begin
  PostMessage(THandle(AHandle),MY_MSG,11,22);
end;

exports
  LoadDLL;

begin

end.

2.主程序代码
unit Unit1;

interface

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

const
  MY_MSG = WM_USER + 101;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    procedure MyMsgFunc(var AMsg: TMessage); message MY_MSG;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

procedure LoadDLL(const AHandle: Pointer); stdcall;external 'Project2.dll';

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  LoadDLL(Pointer(Handle));
end;

procedure TForm1.MyMsgFunc(var AMsg: TMessage);
begin
  ShowMessage(IntToStr(AMsg.WParam) + '|' + IntToStr(AMsg.LParam));
end;

end.
原文地址:https://www.cnblogs.com/hnxxcxg/p/2940878.html