Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Каким образом лучшее всего передать инфо из проги в прогу? [D6, WinXP]


Страницы:   1 2

oduvan ©   (2002-08-13 16:12:00) 

Каким образом лучшее всего передать инфо из проги в прогу?

Если Messaga"ми, то как передать текстовую строку (string или PCHAR), я так понял, что нужно зоздавать свой Тип Мессаджа там WM_USER+NNN. Поможите мастаки!


Garrison   (2002-08-15 17:47:00) [1]

А Memory Mapped Files не пробовали?


cdaDmitriy   (2002-08-14 14:26:00) [2]

>>wal © (14.08.02 14:22)
>A еще можно использовать DDE

OLE ,COM, DCOM, ActiveX и так далее ....


wal   (2002-08-14 14:22:00) [3]

А еще можно использовать DDE


Игорь Шевченко   (2002-08-13 18:47:00) [4]

cdaDmitriy © (13.08.02 18:42)

Дальше - Program Files/Borland/Delphi/Demos/IPCDemos/*.*


cdaDmitriy   (2002-08-13 18:42:00) [5]

Это понятно ну а дальше


Игорь Шевченко   (2002-08-13 18:41:00) [6]

cdaDmitriy © (13.08.02 18:36)

MMF - Memory mapped files


cdaDmitriy   (2002-08-13 18:36:00) [7]

Игорь Шевченко © (13.08.02 16:31)
Через MMF, к примеру

Что имеешь в виду расшифруй


Игорь Шевченко   (2002-08-13 18:13:00) [8]

Alx2 © (13.08.02 18:05)

Сдохло при передаче или при приеме ? (я, кстати, в аську стукнул)


Alx2   (2002-08-13 18:05:00) [9]

Попробовал еще раз :)
Все сдохло моментально ...


Игорь Шевченко   (2002-08-13 17:49:00) [10]

Alx2 © (13.08.02 17:44)

Насколько я понял и надо передавать именно PChar из которого на приемной строне String делается.
Я не признаю такого рода заморочки с AnsiString, уж больно чреваты они подводными камнями.


Alx2   (2002-08-13 17:48:00) [11]

>Игорь Шевченко © (13.08.02 17:39)
Извини, невнимательно посмотрел. По-моему так тоже пробовал. Траблы оставались.


Alx2   (2002-08-13 17:44:00) [12]

>cdaDmitriy © (13.08.02 17:40)
Да. И даже больше
>Игорь Шевченко © (13.08.02 17:39)
Ну в этом случае чистый pchar просто передаем.
А затык был именно на разнице между
Str := CBTCreateWnd^.lpCs^.lpszClass;
и
SetLength(Str,255);
GetClassName(wParam,PChar(Str),255); // Класс окна получаем заново, не используя переданное
Str := PChar(Str);


cdaDmitriy   (2002-08-13 17:40:00) [13]

Alx2 © Так это 2 процесса ???


Игорь Шевченко   (2002-08-13 17:39:00) [14]

А так:

MyWindow := FindWindow("TWatcherForm", "WatcherForm");
with DataStruct do begin
dwData := wParam;
cbData := StrLen(CBTCreateWnd^.lpCs^.lpszClass)+1;
lpData := CBTCreateWnd^.lpCs^.lpszClass;
end;
SendMessage(MyWindow, WM_CopyData, 8101973, Integer(@DataStruct));

А на приемной стороне как сейчас...


Alx2   (2002-08-13 17:36:00) [15]

Забыл про обратную сторону:

Procedure TWatcherForm.onCopyData(Var Msg: TMessage);

Var
wProcessID: DWORD;
S: String;
ID: Integer;
Begin
<что-то обрабатываем и инициализируем>
Memo1.Lines.Add(DateTimeToStr(Now) + "> " + GetExeName(wProcessID) + " (" +
IntToStr(wProcessID) + "): " +
String(PCopyDataStruct(Msg.LPARAM)^.lpData)); // используем переданный string
End;
End;


Alx2   (2002-08-13 17:33:00) [16]

>Игорь Шевченко © (13.08.02 17:24)
4 байта - потому-что строка.

А заморочки такие давно канули в лету. Просто сам факт остался непонятым. То что это можно обойти - само собой. Но тут уже дело в принципе.


Игорь Шевченко   (2002-08-13 17:24:00) [17]

Зачем такие заморочки со строками ?
И зачем +4 у cbData ?

И что на приемной стороне ?


Alx2   (2002-08-13 17:17:00) [18]

Нет.


Игорь Шевченко   (2002-08-13 17:15:00) [19]

ShellProc и MyWindow в одном процессе ?


Alx2   (2002-08-13 17:03:00) [20]

>Игорь Шевченко © (13.08.02 16:59)
А конкретнее?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо