Biblioteka:
library Project2;
uses
Windows,
Messages;
{$R *.res}
const
WM_KOMUNIKAT = WM_USER + 4321;
var
Handle : HWND;
procedure GetMyHandle(H : HWND);
begin
Handle := H;
end;
procedure SendMyMessage;
begin
PostMessage(Handle, WM_KOMUNIKAT, 2222, 0);
end;
exports
GetMyHandle,
SendMyMessage;
begin
end.
Aplikacja:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
WM_KOMUNIKAT = WM_USER + 4321;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
procedure Komunikat(var Msg: TMessage); message WM_KOMUNIKAT;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure GetMyHandle(H : HWND); external 'Project2.dll' name 'GetMyHandle';
procedure SendMyMessage; external 'Project2.dll' name 'SendMyMessage';
procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(Handle, WM_KOMUNIKAT, 1111, 0);
end;
procedure TForm1.Komunikat(var Msg: TMessage);
begin
ShowMessage(IntToStr(Msg.WParam));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
GetMyHandle(Handle);
SendMyMessage;
end;
end.
Po kliknieciu na Button2 wykonuje sie poprawnie procedura komunikat (pokazuje 2222). Coś musiałeś przekombinować po drodze.