Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2011, 18:35   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
Восклицание Проблема с получением текста из label чужого окна, при том что, текст и класс уже известны.

Всем привет!

По сабжу:
При исключении программы вызвается системное окно класса "#32770"
там заголовок ошибки, и текст в надписи. Класс надписи "Static".

Собственно надо заполучить текст из надписи.

Пробовал вот так:
Код:
procedure TForm1.TimerTimer(Sender: TObject);
var
  wnd, wnd2: HWND;
  len: Integer;
  Buff1: array[0..255] of Char;
  //Buff2: array[0..255] of Char;
  s:string;
begin
  Wnd := FindWindow('#32770', nil);
  if wnd <> 0 then
  begin
    GetWindowText(wnd, Buff1, SizeOf(Buff1));
    Wnd2 := FindWindowEx(wnd, 0, 'Static', nil);
    len:=SendMessage(wnd2,WM_GETTEXTLENGTH,0,0);
    SetLength(s,len+1);
    SendMessage(wnd2,WM_GETTEXT,len+1,Integer(s));
    //Memo1.Lines.Add(s);
    //GetWindowText(wnd2, Buff2, SizeOf(Buff2));
    ListBox.Items.Add('Найденно окно: ' + Buff1 + ' с текстом: ' + s);
    Timer.Enabled:=False;
  end;
end;
Но этот код забирает только заголовок окна (Класс #32770).
В переменной S где должна быть текст из Static , ничего нет. т.е. она пустая.

Почему? и как правельно надо зделать? Прошу помощи....
Человек_Борща вне форума Ответить с цитированием
Старый 15.01.2011, 18:49   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Правильно. Ты нашел окно
Цитата:
Wnd := FindWindow('#32770', nil);
А теперь нужно найти окно в этом окне
Код:
Wnd := FindWindowEx(Wnd,0,'TStatic', nil);
И это только в том случае если там еще каких контейнеров нет. Тут на помощь придет утилита SpyХХ, которая покажет вхождения окна текста в форму.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Проблема] Программное изменение заголовка чужого окна по хендлу процесс(EnumWindows) Человек_Борща Общие вопросы Delphi 8 08.01.2011 22:40
Проблема с правильным выводом текста в label Bigtyoma Помощь студентам 2 09.11.2010 00:01
Создайте класс ТЕКСТ. Обязательными методами класса являются ввод и вывод текста, редактирование и отобра Mars01 Паскаль, Turbo Pascal, PascalABC.NET 1 06.10.2010 13:43
Копирование выделенного текста из чужого окна Gerzs Общие вопросы Delphi 0 02.07.2010 18:47
Проблема с получением текста в tclientsocket zver777 Работа с сетью в Delphi 1 24.09.2009 22:50