Форум: "Основная";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
ВнизКак получить данные из _удалённого_ 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.055 c