Вниз
Скачать: CL | DM;

Регистрация, ловля и оправка сообщения   Найти похожие ветки 

← →
-=GaLaN=- ©   (2003-12-15 15:19) [0]

Можно попросить уважаемых мастеров привести код как послать сообщение в свою программу из, например, dll"шки; как его словить в самой программе, послучив вместе с сообщением еще и строку с данными?


← →
JibSkeart ©   (2003-12-15 15:21) [1]

SendMessage,PostMessage

Вобщем даже в хелпе есть примеры :))


← →
-=GaLaN=- ©   (2003-12-15 15:24) [2]

Я, в принципе, представляю, как это делается. Но вот строку передать с сообщением - не знаю как. :(


← →
Palladin ©   (2003-12-15 15:24) [3]

Send/PostMessage
в программе/форме соответственно реализуешь обработчики своих сообщений...
см. директиву message

если подразумевается передача данных, а не управление, то лучше использовать callback функции/процедуры, тоесть из приложения в dll производится передача адреса процедуры отвечающей за обработку данных и позже при необходимости вызывается в dll...


← →
-=GaLaN=- ©   (2003-12-15 15:30) [4]

2Palladin:
Честно говоря, не помешает и то, и другое. ;) Передать-то надо всего одну строку, и не обязательно через dll. Поэтому message будет лучше.
Но если ты дашь примерчик и callbak функции, то я совсем будет признателен ;)


← →
Palladin ©   (2003-12-15 17:18) [5]

Фрагмент библиотеки
type

TSendStringProc=procedure (const p_strData:string) of object; // stdcall - по вкусу

var
procCBSetStrWorkProc:TSendStringProc=nil;

procedure SetCBSendStringProc(p_procStrWork:TSendStringProc);
begin
@procCBSetStrWorkProc:=p_procStrWork;
end;

procedure DoSomething;
var
i:integer;
begin
for i:=0 to 4 do if @procCBSetStrWorkProc<>nil then
procCBSetStrWorkProc("String from DLL #"+IntToStr(i+1));
end;

Фрагмент приложения

type

TSendStringProc=procedure (const p_strData:string) of object; // stdcall - по вкусу

TForm1=class ...
procedure StrWork(const p_strData:string);
procedure InitLib;
...
end;

procedure TForm1.InitLib;
var
procSetCBStrWorkProc:procedure (p_procCBStrWork:TSendStringProc); //stdcall
begin
...
// получаем procSetCBStrWorkProc
procSetCBStrWorkProc(@StrWork);
...
end;

procedure TForm1.StrWork;
begin
ShowMessage(p_strData);
end;


писалось тут и поэтому не тестировалось


← →
Silver Alex ©   (2003-12-15 17:43) [6]

можно еще вот так строку послать

SendMessage(self.Handle,wm_Main,0,integer(pchar(Edit1.Text)));


← →
Palladin ©   (2003-12-15 17:54) [7]


> Silver Alex © (15.12.03 17:43) [6]

Два раза кастинг не надо делать. Просто
integer(s) или integer(Edit1.text)


← →
Silver Alex ©   (2003-12-15 18:27) [8]


> Palladin © (15.12.03 17:54) [7]

ну не надо, так не надо :))



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
1-86433
Strage
2003-12-13 11:29
2003.12.26
Можно ли заменить цвет у clBtnFace?


1-86332
Alexest
2003-12-15 15:28
2003.12.26
помогите с ActiveX Control


14-86518
raymond
2003-12-04 08:57
2003.12.26
Диски караоке...


3-86249
AleKo
2003-12-03 08:15
2003.12.26
DBGrid и ADOTable удаленные записи


3-86291
ploxish
2003-12-01 11:23
2003.12.26
Interbase & Generator




   Наверх