Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FindWindowEx 
:(
    Опции темы
BLACK_KOT
Дата 1.6.2008, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 20.12.2006

Репутация: нет
Всего: -1



Код

if FindWindowEx(FindWindowEx(FindWindow(nil,'Public room'),0,'TPanel',nil),0,'TExRichEdit',nil)<>0 then ShowMessage('нащёл строку для ввода текста);


ищу строку для ввода текста, которая расположена на панели в окне.
проблема в том что таких безымянных панелий несколько в окне этом, а нужная мне стоит ниже в дереве окон. получается, что я обращаюсь к верхней, что делать? поправте текст пожалуйста!!


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
Rrader
  Дата 1.6.2008, 04:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 18
Всего: 191



Есть такая API-функция - GetNextWindow. Как найдешь панель, вызови ее.
Код

var
  H: THandle;
begin
  H := FindWindow(NIL, 'Public room');
  H := FindWindowEx(H, 0, 'TPanel', NIL);
  H := GetNextWindow(H, GW_HWNDNEXT);
  H := FindWindowEx(H, 0, 'TExRichEdit', NIL);  
  If H <> 0 Then ShowMessage('Нашёл строку для ввода текста');
end;

Думаю, идея понятна. Поэкспериментируй smile 

Это сообщение отредактировал(а) Rrader - 1.6.2008, 10:41


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
BLACK_KOT
Дата 1.6.2008, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 20.12.2006

Репутация: нет
Всего: -1



СПАСИБО, то что надо!


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
BLACK_KOT
Дата 1.6.2008, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 20.12.2006

Репутация: нет
Всего: -1



блин, ещё проблема: вставляю текст в это окно - английский нормально, а русский - аброкадабру вставляет.что за хрень?

Код

SendMessage(FindWindowEx(GetNextWindow(FindWindowEx(FindWindow(nil,'public Room'),0,'TPanel',nil),GW_HWNDNEXT),0,'TExRichEdit',nil), WM_SETTEXT, 0, lparam(LPCTSTR('Мой текст')));


можно ли как то устранить?


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
THandle
Дата 1.6.2008, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



BLACK_KOT, с обычным TRichEdit все нормально работает:

Код

  SendMessage(
    FindWindowEx(
      GetNextWindow(
        FindWindowEx(
          FindWindow(nil, 'public Room'),
        0, 'TPanel', nil),
      GW_HWNDNEXT),
    0, 'TRichEdit', nil),
  WM_SETTEXT, 0, lparam(LPCTSTR('Мой текст')));


Тестовые приложения на всякий случай в аттаче.

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  fw.rar 10,21 Kb
PM   Вверх
BLACK_KOT
Дата 1.6.2008, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 20.12.2006

Репутация: нет
Всего: -1



спасибо за пример, но дело в том что вставляю текст я в не в свою прогу, а в стандартный Exsodus, который работает с сервером Jabber - чат вобщем обычный - у нас через него пол сети городской сидит. как понимаеш, тут даж если захочеш и топором не вырубиш это грёбаное окошко. вот такой тип у этого окна и придётся думать как текст на русском туда запихать. кстати вставка из буфера - нормально катит - русские буквы, тока эт неудобно оч, малоли чё в буфере быть может. хотя вариант. мож падскажите с реализацией такого гемороя?


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
BLACK_KOT
Дата 2.6.2008, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 20.12.2006

Репутация: нет
Всего: -1



WM_PASTE  : нащёл закономерность хитрую: если копирование было на русской раскладке - то в окошко это вставится нормально, по-русски. а есль на английской раскладке русские буквы копировались - то вставится в это окошко кадабра турецкая. а с WM_SETTEXT- на любых раскладках ероглифы.

пробовалраскладки менять - безтолку. мож кто чё посоветует?


Это сообщение отредактировал(а) BLACK_KOT - 2.6.2008, 00:42


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1188 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.