Текущий архив: 2003.12.26;
Скачать: 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 вся ветка
Текущий архив: 2003.12.26;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.006 c