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

Вниз

Получение текста из TMemo   Найти похожие ветки 

 
RyDmi ©   (2004-09-25 00:08) [0]

Как посредством WM_GETTEXT получать текст из чужого TMEMO. Очень прошу кого- нибудь откликнутся - НЕ могу никак справится. Заранее спасибо!


 
Piter ©   (2004-09-25 00:43) [1]

SendMessage(MemoHandle, WM_GETTEXT, 120, Longint(s));

помогло?


 
Cobalt ©   (2004-09-25 00:43) [2]

> из чужого TMEMO
В смысле - из чужого процесса?


 
Piter ©   (2004-09-25 00:45) [3]

Cobalt ©   (25.09.04 0:43) [2]
В смысле - из чужого процесса?


а какая разница из какого процесса?

RyDmi ©   (25.09.04 0:08)
В смысле - из чужого процесса?


я чего-то не то кинул, лучше так:

SendMessage(MemoHandle, WM_GETTEXT, length(s), Longint(s));

только вот чувствую толку тебе от этой строчки. У тебя большие пробелы в знаниях. На начальном уровне.


 
GanibalLector ©   (2004-09-25 02:03) [4]

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.


 
GanibalLector ©   (2004-09-25 02:29) [5]

В итоге,получается что-то типа :

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.


 
Piter ©   (2004-09-28 11:01) [6]

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-28 20:04) [7]

что я проверял и в чем уверенность?
В Вашем коде.Это :
SendMessage(MemoHandle, WM_GETTEXT, 120, Longint(s));
не считает TMemo.Хош,проверь сам. :))


 
Almaz ©   (2004-09-28 20:27) [8]


> 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-29 19:44) [9]

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;


 
GanibalLector ©   (2004-09-29 19:47) [10]

2 Almaz ©
т.к. именно WM_GETTEXT позволяет передавать данные из одного адресного пространства в другое. EM_GETLINE - тут не поможет, нужно использовать именно WM_GETTEXT

Ну-ну...Именно из одного приложения в другое и именно EM_GETLINE.Вот.


 
GanibalLector ©   (2004-09-30 19:16) [11]

Так где правда???


 
Almaz ©   (2004-09-30 22:22) [12]


> GanibalLector ©   (30.09.04 19:16) [11]
> Так где правда???

The truth is out there :)
А если серьезно, то признаю, ваш пример работает. Однако согласитесь, что получать данные одним сообщением несколько эффективнее, чем несколькими да еще с последующей конкатенацией строк.


 
GanibalLector ©   (2004-10-01 21:27) [13]

2 Almaz
The truth is out there :)
Это точно...



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

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

Наверх




Память: 0.49 MB
Время: 0.025 c
8-1088581377
clampo
2004-06-30 11:42
2004.11.07
grahic analyzer


1-1098780556
tria
2004-10-26 12:49
2004.11.07
Объясните плиз природу следующего глюка:


3-1097235085
basken
2004-10-08 15:31
2004.11.07
Конвертация FR 2.57 в FR 3.02, Подскажите кто знает


14-1098034446
u
2004-10-17 21:34
2004.11.07
Есть ли способы лечить пивной алкоголизм?


14-1097833874
NewDelpher
2004-10-15 13:51
2004.11.07
TClientSocket и TServerSocket