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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2012, 21:35   #1
maks5
Пользователь
 
Регистрация: 08.03.2011
Сообщений: 61
Вопрос Как узнать размер чужой программы?

Нужно узнать Height и Width чужого окна.
Искал по форуму, гугл не помогает. Надежда на вас
Заранее благодарен.
maks5 вне форума Ответить с цитированием
Старый 04.01.2012, 21:52   #2
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Win Api в помощь

Находим дескриптор нужного окна при помощи FindWindow или EnumChildWindows

И получаем размер окон при помощи
Код:
GetWindowRect, GetClientRect
Хотя я могу ошибаться)
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.

Последний раз редактировалось chertovich; 04.01.2012 в 21:56.
chertovich вне форума Ответить с цитированием
Старый 04.01.2012, 22:22   #3
maks5
Пользователь
 
Регистрация: 08.03.2011
Сообщений: 61
По умолчанию

А можно по подробнее? Примерчик? Буду благодарен.
maks5 вне форума Ответить с цитированием
Старый 04.01.2012, 22:59   #4
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Простенький пример ловим Хэндел окна под указателем мышы и узнаем его положение и размеры с выводом результата в Caption
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  p: TPoint;
   h:HWND;
   WindowRect: TRect;
begin
//опрашиваем позицию мышы
GetCursorPos(p);
//получаем дескриптор окна под курсором
h:= WindowFromPoint(Mouse.CursorPos);
if h<>0 then
begin
//Узнаем положение и размеры окна по курсором
 GetWindowRect(H, WindowRect);
 Caption:=Format('top=%d Left=%d Width=%d Height=%d',[WindowRect.Top, WindowRect.Left,
WindowRect.Right-WindowRect.left, WindowRect.Bottom-WindowRect.Top]);
end;
end;
Можно использовать FindWindow заместо GetCursorPos но тогда нужно точно указать название окна либо класс

Примерно так:
Таймер будет следить за изменениями окна блокнота
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
   h:HWND;
   WindowRect: TRect;
begin
//Ищем Хэндел блокнота
h := findwindow(nil, 'Безымянный - Блокнот');
if h<>0 then
begin
//Узнаем положение и размеры найденого окна блокнота
 GetWindowRect(H, WindowRect);
 Caption:=Format('top=%d Left=%d Width=%d Height=%d',[WindowRect.Top, WindowRect.Left,
WindowRect.Right-WindowRect.left, WindowRect.Bottom-WindowRect.Top]);
end;
end;

Последний раз редактировалось Aliens_wolfs; 04.01.2012 в 23:13.
Aliens_wolfs вне форума Ответить с цитированием
Старый 05.01.2012, 23:35   #5
maks5
Пользователь
 
Регистрация: 08.03.2011
Сообщений: 61
По умолчанию

Отлично! от что нужно. Спасибо!
maks5 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск чужой программы как сервиса Человек_Борща Общие вопросы Delphi 9 08.02.2011 13:44
Как узнать размер изображения Lokos Мультимедиа в Delphi 3 21.12.2009 16:44
Исходник программы "узнать чужой IP" YoraG Работа с сетью в Delphi 6 18.10.2009 10:01
Как узнать размер файла? photozaz Общие вопросы Delphi 4 01.08.2008 00:29
Как узнать размер массива мандарин Общие вопросы Delphi 2 30.05.2007 19:18