Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

RichEdit20A. Как взять текст?


Страницы:   1 2

DmitrichJ ©   (2007-05-21 02:18:00) 

Привет, мастера. Собственно и весь вопрос. Как взять текст данного класса из чужого окна? Хэндлы окна и объекта имеются.
Спасибо.


Leonid Troyanovsky   (2007-05-22 23:41:00) [1]


> DmitrichJ   (22.05.07 22:04) [30]

> Где у меня? Я пример Rouse_ не использую.

У уважаемого Rouse_ © с этим, как раз, нормально.

--
Regards, LVT.


DmitrichJ   (2007-05-22 22:04:00) [2]

?
Где у меня? Я пример Rouse_ не использую.


Leonid Troyanovsky   (2007-05-22 19:59:00) [3]


> DmitrichJ   (22.05.07 19:42) [28]

> Кнопку индентифицировал, но отследить нажатие не получается

У тебя ошибка в 17 строке.

--
Regards, LVT.


DmitrichJ   (2007-05-22 19:42:00) [4]

Кнопку индентифицировал, но отследить нажатие не получается =(


Leonid Troyanovsky   (2007-05-22 18:06:00) [5]


> DmitrichJ   (22.05.07 15:49) [26]

> Последний вопрос. в чужом окне есть кнопка 'Button'. Можно
> ли отследить её надатие в хуке?

Окна класса 'BUTTON' получают сообщения BM_*, например, BM_CLICK. Идентифицировать кнопку можно, например, GetDlgCtrlId.

--
Regards, LVT.


DmitrichJ   (2007-05-22 15:49:00) [6]

Последний вопрос. в чужом окне есть кнопка 'Button'. Можно ли отследить её надатие в хуке?


Leonid Troyanovsky   (2007-05-22 15:41:00) [7]


> DmitrichJ   (22.05.07 15:29) [24]

> А как по координатам? Или вообще как узнать
> какие классы есть в чужом окне.

EnumChildWindows, GetClassName, GetWindowRect

--
Regards, LVT.


DmitrichJ   (2007-05-22 15:29:00) [8]

64К, мне за уши. А как по координатам? Или вообще как узнать какие классы есть в чужом окне. Штудирую инет в доль и поперёк, но как-то всё не то.


Leonid Troyanovsky   (2007-05-22 14:51:00) [9]


> DmitrichJ   (22.05.07 12:59) [20]

> А если в чужоп окне 2 RichEdit20A? По каким параметрам можно
> найти нужное?

Например, по z-order. Или по координатам.

--
Regards, LVT.


Leonid Troyanovsky   (2007-05-22 14:49:00) [10]


> DmitrichJ   (22.05.07 12:53) [19]

>  надеюсь, можно больше 255 символов?

Хоть 64К.
Ну, а если больше, то подход такой, как в [1]
для EM_GETSELEXT, EM_STREAMOUT.

--
Regards, LVT.


Rouse_   (2007-05-22 13:24:00) [11]


> А то в начале пример, столько писанины, а толку?

Первый пример делает тоже самое, только через EM_


DmitrichJ   (2007-05-22 12:59:00) [12]

А если в чужоп окне 2 RichEdit20A? По каким параметрам можно найти нужное?


DmitrichJ   (2007-05-22 12:53:00) [13]

Хм... действительно работает.... круть.... А то в начале пример, столько писанины, а толку? Толька я не провверил, надеюсь, можно больше 255 символов?


Leonid Troyanovsky   (2007-05-21 15:37:00) [14]


> Rouse_ ©   (21.05.07 13:51) [17]

> Кстати мне почему-то казалось, что для RICHEDIT система
> не делает проецируемый файл. Разве под 3.1 он уже существовал?


Она делает для WM_GETTEXT. А для, скажем, EM_ - уже не будет.
Вот например, для Wordpad (w2k3):

var
  buf: array [0..255] of Char;
  h : HWND;
begin
  h := FindWindow('WordpadClass', nil);
  h := FindWindowEx(h, 0, 'RICHEDIT50W', nil);
  ShowMessage(Format('%d %s', [SendMessage(h, WM_GETTEXT, SizeOf(buf), LParam(@buf)), buf]));
end;

все получается.

--
Regards, LVT.


Rouse_   (2007-05-21 13:51:00) [15]

Кстати мне почему-то казалось, что для RICHEDIT система не делает проецируемый файл. Разве под 3.1 он уже существовал?


DmitrichJ   (2007-05-21 13:32:00) [16]

Не могу разобраться=(


Leonid Troyanovsky   (2007-05-21 13:03:00) [17]


> DmitrichJ   (21.05.07 12:45) [13]

> // Выделяем в нем память под структуру TGetTextLengthEx

А д.б.
{
var
 buf: array [0..255] of Char;
}

ShowMessage(Format('%d %s', [SendMessage(h, WM_GETTEXT, SizeOf(buf), LParam(@buf)), buf]));

--
Regards, LVT.


Rouse_   (2007-05-21 12:56:00) [18]

Если GetLastError возвращает ERROR_INVALID_HANDLE значит ProcessHandle кривой... Что-то ты видать там поправил.


DmitrichJ   (2007-05-21 12:45:00) [19]

Leonid Troyanovsky, здесь сейчас пользуюсь примером, но работать не хочет.
Вот в этом месте    
// Выделяем в нем память под структуру TGetTextLengthEx
  PStructTextLength := VirtualAllocEx(ProcessHandle, nil,
    SizeOf(TGetTextLengthEx), MEM_COMMIT or MEM_TOP_DOWN, PAGE_READWRITE);
  if PStructTextLength = nil then RaiseLastOSError;


DmitrichJ   (2007-05-21 12:43:00) [20]

Сейчас почему-то пишет A call to an OS function failed


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо