![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Каким образом лучшее всего передать инфо из проги в прогу? [D6, WinXP]
oduvan © (2002-08-13 16:12:00)Каким образом лучшее всего передать инфо из проги в прогу?
Если Messaga"ми, то как передать текстовую строку (string или PCHAR), я так понял, что нужно зоздавать свой Тип Мессаджа там WM_USER+NNN. Поможите мастаки!
Игорь Шевченко (2002-08-13 16:59:00) [21]Alx2 © (13.08.02 16:48)
Нда...
Alx2 (2002-08-13 16:48:00) [22]>MBo © (13.08.02 16:42)
На вскидку:
Function ShellProc(nCode: Integer; WPARAM, LPARAM: Integer): Integer; Stdcall;
Var
CBTCreateWnd: PCBTCreateWnd Absolute LPARAM;
Str : String;
DataStruct : TCOPYDATASTRUCT;
Begin
Result := CallNextHookEx(hhk, nCode, WPARAM, LPARAM);
If nCode = hcbt_ACTIVATE
Then
Begin
MyWindow := FindWindow("TWatcherForm", "WatcherForm");
Str := CBTCreateWnd^.lpCs^.lpszClass; // - накрывается при таком подходе (используем переданный класс).
with DataStruct do
begin
dwData := wParam;
cbData := Length(Str)+4;
lpData := Pointer(Str);
end;
SendMessage(MyWindow, WM_CopyData, 8101973, Integer(@DataStruct));
End;
End;
А так - работает
Function ShellProc(nCode: Integer; WPARAM, LPARAM: Integer): Integer; Stdcall;
Var
CBTCreateWnd: PCBTCreateWnd Absolute LPARAM;
Str : String;
DataStruct : TCOPYDATASTRUCT;
Begin
Result := CallNextHookEx(hhk, nCode, WPARAM, LPARAM);
If (nCode = hcbt_ACTIVATE Then
Begin
MyWindow := FindWindow("TWatcherForm", "WatcherForm");
SetLength(Str,255);
GetClassName(wParam,PChar(Str),255); // Класс окна получаем заново, не используя переданное
Str := PChar(Str);
with DataStruct do
begin
dwData := wParam;
cbData := Length(Str)+4;
lpData := Pointer(Str);
end;
SendMessage(MyWindow, WM_CopyData, 8101973, Integer(@DataStruct));
End;
End;
Подробнее завтра воспроизведу.
Пишу второпях уже, могу поднагнать, как обычно :))
MBo (2002-08-13 16:42:00) [23]>Alx2
Большой практики нет. Какие?
Игорь Шевченко (2002-08-13 16:31:00) [24]Через MMF, к примеру
Alx2 (2002-08-13 16:29:00) [25]>MBo © (13.08.02 16:13)
Местами встречаются интересные казусы с этим wm_copydata.
MBo (2002-08-13 16:13:00) [26]wm_copydata