![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получение текста из TMemo [D6, WinXP]
RyDmi © (2004-09-25 00:08:00)Как посредством WM_GETTEXT получать текст из чужого TMEMO. Очень прошу кого- нибудь откликнутся - НЕ могу никак справится. Заранее спасибо!
GanibalLector (2004-10-01 21:27:00) [1]2 Almaz
The truth is out there :)
Это точно...
Almaz (2004-09-30 22:22:00) [2]
> GanibalLector © (30.09.04 19:16) [11]
> Так где правда???
The truth is out there :)
А если серьезно, то признаю, ваш пример работает. Однако согласитесь, что получать данные одним сообщением несколько эффективнее, чем несколькими да еще с последующей конкатенацией строк.
GanibalLector (2004-09-30 19:16:00) [3]Так где правда???
GanibalLector (2004-09-29 19:47:00) [4]2 Almaz ©
т.к. именно WM_GETTEXT позволяет передавать данные из одного адресного пространства в другое. EM_GETLINE - тут не поможет, нужно использовать именно WM_GETTEXT
Ну-ну...Именно из одного приложения в другое и именно EM_GETLINE.Вот.
GanibalLector (2004-09-29 19:44:00) [5]2 Almaz ©
Позвольте этот же вопрос адресовать Вам. А вы проверяли ?
Естественно.Вот :
var w:HWND;LCount:DWord;
Text:array [0..4095] of char;
i:integer;
begin
w:=findwindowex(findwindow('TForm1','Fuck'),0,'TMemo',nil);
LCount := SendMessage(W, EM_GETLINECOUNT , 0, 0);
for i:=1 to LCount-1 do
begin
Word((@Text)^) := SizeOf(Text);
SendMessage(w, EM_GETLINE,i,Longint(@Text));
Memo1.lines.add( StrPas(text));
end;end;
Almaz (2004-09-28 20:27:00) [6]
> GanibalLector © (25.09.04 02:29) [5]
> А Вы сами проверяли???Откуда такая уверенность???
Позвольте этот же вопрос адресовать Вам. А вы проверяли ? Именно из Memo, принадлежащего окну другогопроцесса ? Разрешите усомниться, что это сработало, т.к. именно WM_GETTEXT позволяет передавать данные из одного адресного пространства в другое. EM_GETLINE - тут не поможет, нужно использовать именно WM_GETTEXT:
var
w: HWND;
Text: PChar;
BufLen: Integer;
begin
w:=findwindowex(findwindow('TForm1','Form1'),0,'TMemo',nil);
BufLen := SendMessage(W, WM_GETTEXTLENGTH, 0, 0);
if BufLen > 0 then
begin
GetMem(Text, BufLen + 1);
SendMessage(W, WM_GETTEXT, BufLen + 1, Integer(Text));
end;
Memo1.Text := Text;
end;
Удачи.
GanibalLector (2004-09-28 20:04:00) [7]что я проверял и в чем уверенность?
В Вашем коде.Это :
SendMessage(MemoHandle, WM_GETTEXT, 120, Longint(s));
не считает TMemo.Хош,проверь сам. :))
Piter (2004-09-28 11:01:00) [8]GanibalLector © (25.09.04 2:03) [4]
А Вы сами проверяли???Откуда такая уверенность???
что я проверял и в чем уверенность?
An application sends an LB_GETTEXT message to retrieve a string from a list box.
TMemo - обычный Edit
GanibalLector (2004-09-25 02:29:00) [9]В итоге,получается что-то типа :
procedure TForm1.Button1Click(Sender: TObject);
var ww:HWND; Text:array [0..4095] of char;
begin
ww:=findwindowex(findwindow('TForm1','Fuck'),0,'TMemo',nil);
Word((@Text)^) := SizeOf(Text);
SendMessage(ww, EM_GETLINE,1,Longint(@Text));
Caption := StrPas(text);
end;
скопировал 2 строку из "чужого" memo и вставил ее в Caption.
GanibalLector (2004-09-25 02:03:00) [10]2 Piter © (25.09.04 00:45) [3]
А Вы сами проверяли???Откуда такая уверенность???
Remarks
For an edit control, the text to be copied is the content of the edit control. For a combo box, the text is the content of the edit control (or static-text) portion of the combo box. For a button, the text is the button name. For other windows, the text is the window title. To copy the text of an item in a list box, an application can use the LB_GETTEXT message.
Piter (2004-09-25 00:45:00) [11]Cobalt © (25.09.04 0:43) [2]
В смысле - из чужого процесса?
а какая разница из какого процесса?
RyDmi © (25.09.04 0:08)
В смысле - из чужого процесса?
я чего-то не то кинул, лучше так:
SendMessage(MemoHandle, WM_GETTEXT, length(s), Longint(s));
только вот чувствую толку тебе от этой строчки. У тебя большие пробелы в знаниях. На начальном уровне.
Piter (2004-09-25 00:43:00) [12]
SendMessage(MemoHandle, WM_GETTEXT, 120, Longint(s));
помогло?
Cobalt (2004-09-25 00:43:00) [13]> из чужого TMEMO
В смысле - из чужого процесса?