![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно заполнить PCopyDataStruct? [D7, WinXP]
Aleksandr. © (2005-01-25 16:02:00)Мне надо из одного приложения в другое передать packed record. Объявляю его как:
PCrtInfo = ^TCrtInfo;
TCrtInfo = packed record
UserID : integer;
Localed : boolean;
Dir : PChar;
FileTime : longint;
end;
Правильно ли будет параметры для сообщения WM_CopyData заполнять как
var
P : PCopyDataStruct;
I : PCrtInfo;
begin
...
I.UserID:=10123;
I.Localed:=true;
I.Dir:=StrNew('C:\Test');
I.FileTime:=FileAge('C:\Test\test01.txt');
P.dwData:=ID;
P.cbData:=SizeOf(I);
P.lpData:=I;
SendMessage(RecWnd,WM_CopyData,Handle,LParam(@P))
end
Или размер для cbData надо высчитывать иначе - сплюсовывая размеры для целых и булевых с длиной строки в Dir?
Aleksandr. (2005-01-25 17:19:00) [1]Спасибо... Я глядел в Rus WinApi, там сразу и сампл был со строкой. То ли устарел он, то ли я чего не так понял...
MBo (2005-01-25 17:08:00) [2]Сразу не обратил внимания вот на что еще:
переменную P делай либо типа TCopyDataStruct, либо оставь PCopyDataStruct, но тогда выдели память под нее и @ убери из SendMessage. Почти то же самое относится и к I : PCrtInfo;
Digitman (2005-01-25 16:50:00) [3]
> Aleksandr. (25.01.05 16:02)
слушай
> MBo © (25.01.05 16:20) [1]
MBo (2005-01-25 16:20:00) [4]Твою структуру в таком виде передавать бесполезно - указатель PChar в другом процессе не имеет смысла, дв и в размер ее будет входить только размер указателя. Сделай вместо него строку постоянной длины (string[255], например)