Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.01.2009, 14:08
новичёк новичёк вне форума
Прохожий
 
Регистрация: 25.12.2008
Сообщения: 17
Репутация: 10
По умолчанию Чужое окна, 2 вопроса

Не могу найти список всех окон. Мне нужно найти все окна "О программе" программы блокнот. Их около 10 шт.
Ищу так.
Код:
Wd1:=FindWindow(nil, 'О программе');          // Найдем первое окно верхнего уровня любого класса
    for i:=1 to 1500 do              // Если такое окно существует
    Begin
  SetLength(s, SendMessage(wd1, WM_GETTEXTLENGTH, 0, 0)+1);
 SendMessage(wd1, WM_GETTEXT, length(s), Integer(PChar(s)));
 SetLength(s, lStrLen(PChar(s)));
 if s='О программе' then
 begin
 if (GetWindowRect(wd1,Rect) = true) and (rect.Left>(200)) then
                 begin
Мучаем окно
end;
Ищет 2-3 окна "О программе" и все. Я как понял я не с начала ищу, а как начать поиск с начала?

В чужом окне есть картинка в image, как зная хэндл окна вытащить её?
Ответить с цитированием
  #2  
Старый 31.01.2009, 15:58
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

вот написал пример программы, которая показывает заголовки всех доступных окон (и скрытых, если поставить галку на "Hidden").
Вложения
Тип файла: rar WinNames.rar (4.9 Кбайт, 15 просмотров)
Ответить с цитированием
  #3  
Старый 31.01.2009, 18:06
новичёк новичёк вне форума
Прохожий
 
Регистрация: 25.12.2008
Сообщения: 17
Репутация: 10
По умолчанию

Спасибо. Щас посмотрю.
Ответить с цитированием
  #4  
Старый 31.01.2009, 20:42
новичёк новичёк вне форума
Прохожий
 
Регистрация: 25.12.2008
Сообщения: 17
Репутация: 10
По умолчанию

Алгоритм как я понял такой:
Берем хэндл своего окна и крутим цикл пока не будет хэндл равен 0.
Щас буду тестить. Я уже видел такой пример, но не смог запустить. Ругался на handle. Еще как назло у меня массив так назывался. потом понял что имелось виду form1.handle; Опять моя невнимательность.
Karsh Большое спасибо!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:02.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter