Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2009, 09:45   #1
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию CopyDataStruct

Всем привет!
Раньше у меня это как-то нармально получалось, а щас не выходит...

Код:
procedure Tmain_form.Button1Click(Sender: TObject);
var
wnd: HWND;
cd: tCopyDataStruct;
s: string;
begin
   wnd := findWindow(nil, 'EXELORED');
   s := edit1.Text;
   cd.dwData := 0;
   cd.cbData := strlen(pChar(s))+1;
   cd.lpData := pCHar(s);
   sendMessage(wnd, WM_COPYDATA, application.Handle, longint(@cd));
end;
приём
Код:
procedure Tmain_form.cpd(var m: TWMCopyData);
var
sText: pChar;
begin
   getMem(sText, m.CopyDataStruct.cbData);
   StrLCopy(sText, m.CopyDataStruct.lpData, m.CopyDataStruct.cbData); //Преобразуем полученные данные в строку
   label1.Caption:=stext;
end;
Получается какая-то хрень... Текст не полностью доходит...

Способы вроде
Код:
procedure tfstart.Getmessage(var msg: TWMCopyData);
var
sText: array[0..99] of Char;
begin
StrLCopy(sText, Msg.CopyDataStruct.lpData, Msg.CopyDataStruct.cbData); //Преобразуем полученные данные в строку
label1.Caption:=stext;
end
Тоже не проходят....

Если посылаю programmersforum.ru, получаю programmer鏩縶鎨縶|
Altera вне форума Ответить с цитированием
Старый 11.10.2009, 12:31   #2
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Смех

Code Gear 2009 ?
Lime вне форума Ответить с цитированием
Старый 11.10.2009, 14:13   #3
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

да

Ага, вот так нормально работает. ...почему то....

Код:
type
   tR = record
     s: string[255];
   end;
...

procedure Tmain_form.Button1Click(Sender: TObject);
var
wnd: HWND;
cd: tCopyDataStruct;
r: tR;
begin
   wnd := findWindow(nil, 'EXELORED');
   r.s := edit1.Text;
   cd.dwData := 0;
   cd.cbData := sizeOf(r);
   cd.lpData := @r;
   sendMessage(wnd, WM_COPYDATA, application.Handle, longint(@cd));
end;
...

procedure Tmain_form.cpd(var m: TWMCopyData);
var
pR: ^tR;
begin
   pR := m.CopyDataStruct.lpData;
   label1.Caption:=pR^.s;
   edit1.Text := pR^.s;
end;
Но вопрос не исчерпан! Как со строкой обычной реализовать?

Последний раз редактировалось Altera; 11.10.2009 в 18:45.
Altera вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц