Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.04;
Скачать: CL | DM;

Вниз

Как получить данные из _удалённого_ richedit?   Найти похожие ветки 

 
Xarkon   (2005-11-06 16:09) [0]

Имею желание получить текст из richedit, расположенного в другом приложении. WM_GETTEXT достаёт только 64к - не подходит. Делаю через EM_STREAMOUT:

function StreamSave(dwCookie: Longint; pbBuff: PByte; cb: Longint; var pcb: Longint): Longint; stdcall;
var
StreamInfo: PRichEditStreamInfo;
begin
Result := NoError;
StreamInfo := PRichEditStreamInfo(Pointer(dwCookie));
try
  pcb := 0;
  if StreamInfo^.Converter <> nil then
    pcb:= StreamInfo^.Converter.ConvertWriteStream(StreamInfo^.Stream, PChar(pbBuff), cb);
except
  Result := WriteError;
end;
end;

procedure SaveToStream(h:HWND; Stream: TStream);
var
EditStream: TEditStream;
TextType: Longint;
StreamInfo: TRichEditStreamInfo;
Converter: TConversion;
begin
Converter := TConversion.Create;

StreamInfo.Stream := Stream;
StreamInfo.Converter := Converter;
try
  with EditStream do
  begin
    dwCookie := LongInt(Pointer(@StreamInfo));
    pfnCallBack := @StreamSave;
    dwError := 0;
  end;

  sendmessage(h,EM_STREAMOUT, SF_TEXT, Longint(@EditStream));
  if EditStream.dwError <> 0 then
    raise EOutOfResources.Create("Error");
finally
  Converter.Free;
end;
end;

Если делаю  
 s:=TFileStream.Create("tezt", fmCreate);
 SaveToStream(RichEdit1.Handle,s);
 s.free;
где RichEdit1 находится в этом же приложении - всё ок, текст сохраняется.

Если же делать SaveToStream(HANDLE,s);
где HANDLE - хэндл ричедита в постороннем приложении - то или не передаётся ничего, или вообще начинают вылезать АВ...
Что делать?


 
Leonid Troyanovsky ©   (2005-11-07 10:30) [1]


> Xarkon   (06.11.05 16:09)  

> Если же делать SaveToStream(HANDLE,s);
> где HANDLE - хэндл ричедита в постороннем приложении - то
> или не передаётся ничего, или вообще начинают вылезать АВ.
> ..
> Что делать?


Выполнить SaveToStream(HANDLE,s) в контексте первичного потока
чужого приложения, например, из функции хука.

--
Regards, LVT.



Страницы: 1 вся ветка

Текущий архив: 2005.12.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.043 c
14-1132004309
ronyn
2005-11-15 00:38
2005.12.04
Нужен драйвер модема для Linux


9-1121786059
Krigopl
2005-07-19 19:14
2005.12.04
Скрипт для конвертирования моделей из 3d max 7.0 в 3d max 6.0


2-1131968060
igi
2005-11-14 14:34
2005.12.04
как сделать аналог dup()


2-1131955448
Del_programmer
2005-11-14 11:04
2005.12.04
панель задач


5-1114678262
Damir
2005-04-28 12:51
2005.12.04
Ошибка при компиляции компонента