Веб программирование

Взаимодействие библиотеки с окном

 
 


Быдлокод в стиле местных обитателей. Демонстрирует способ отправки строки из библиотеки главному окну приложения, которое ее загрузило. Обратите внимание: если библиотеку загрузило не Ваше приложение, баловство с sendmessage и pchar не прокатит, так как адресные пространства библиотеки и Вашей проги разные.

 

Код формы:

unit Unit1;

interface

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

  const mymessage=wm_user+1110;

  type
    uproc=procedure; // прототип для вызова процедуры.

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    procedure MyMSG(var msg:tmessage);message mymessage;
  end;

var
  Form1: TForm1;
  proc:uproc;
  hlib:thandle;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.MyMSG(var msg: tmessage);
begin
  memo1.lines.add(pchar(msg.WParam));
end;

procedure TForm1.Button1Click(Sender: TObject); // для простоты мы вызываем процедуру сами, по нажатию кнопки
begin
  if assigned(proc) then
  proc;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  proc:=nil;
  hlib:=loadlibrary('project2.dll');
  @proc:=getprocaddress(hlib,pchar('myproc'));
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
if hlib >0 then
freelibrary(hlib);
end;

end.

код библиотеки:

library Project2;

uses
  windows,SysUtils,messages,
  Classes;

const mymessage=wm_user+1110;

procedure myproc;
var
  hw:hwnd;
  str:string;
begin
  str:='Сообщение окну';
  hw:=findwindow(nil,'Stertor');
  sendmessage(hw,mymessage,integer(pointer(str)),0);
end;

exports myproc;

end.


 


Есть вопросы? Спроси на нашем форуме!!
Stertor370 [20.08.2014 18:19]

Окно формы должно иметь Caption "Stertor".



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.