C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Handle активного окна, Как получить дескриптор активного окна ?
Sl@Sh
  Отправлено: 28.09.2004, 16:16


Мастер участка

Группа: Участник
Сообщений: 383



Привет всем ! Ребята, кто знает как получить Handle активного окна ?
Мне нужно делать скрины активного окна и для этого нужен его Handle.
Заранее спасибо
AVC
Отправлено: 28.09.2004, 17:04


Ветеран

Группа: Модератор
Сообщений: 1583



Для текущего приложения, написанного на Builder
Screen->Forms[0]->Handle
Konstantine
  Отправлено: 28.09.2004, 17:09


Мастер участка

Группа: Модератор
Сообщений: 545



А для любого приложения? неизвесного происхождения...
Guest
Отправлено: 28.09.2004, 17:27


Не зарегистрирован







WinApi: EnumWindows, FindWindow, FindWindowEx
Gedeon
Отправлено: 28.09.2004, 18:13


Ветеран

Группа: Модератор
Сообщений: 1742



CODE

HWND GetForegroundWindow(VOID);


QUOTE

The GetForegroundWindow function returns a handle to the foreground window (the window with which the user is currently working). The system assigns a slightly higher priority to the thread that creates the foreground window than it does to other threads.
timson
Отправлено: 28.09.2004, 19:06


Станционный диспетчер

Группа: Участник
Сообщений: 82



GetActiveWindow()
Sl@Sh
Отправлено: 29.09.2004, 08:26


Мастер участка

Группа: Участник
Сообщений: 383



Большое спасибо всем за ответы !
Sl@Sh
Отправлено: 01.10.2004, 08:13


Мастер участка

Группа: Участник
Сообщений: 383



Дескриптор получен ! Но как с его помощью узнать ширину и высоту окна (если возможно) ?
Gedeon
Отправлено: 01.10.2004, 11:23


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (Sl@Sh @ 01/10/2004, 09:15)
Дескриптор получен ! Но как с его помощью узнать ширину и высоту окна (если возможно) ?

Возможно все. А вот лениво самому MSDN почитать.
CODE

HWND Window;
Window = FindWindow("TAppBuilder",NULL);
if(!Window) ShowMessage("Not avialable");
// тут искомую инфу про окно и получаем
WINDOWINFO pwi;
pwi.cbSize = sizeof(WINDOWINFO);
GetWindowInfo(Window,&pwi);
// а вот тут и необходимые размеры
ShowMessage("Высота: " + AnsiString(pwi.rcWindow.bottom — pwi.rcWindow.top));
ShowMessage("Ширина: " + AnsiString(pwi.rcWindow.right — pwi.rcWindow.left));

Находим окно билдера и смотрим его размеры.

Отредактировано Gedeon — 01/10/2004, 12:26
Sl@Sh
Отправлено: 01.10.2004, 15:58


Мастер участка

Группа: Участник
Сообщений: 383



Классно, но а если приложение сделано не в Билдере ?
Gedeon
Отправлено: 04.10.2004, 13:07


Ветеран

Группа: Модератор
Сообщений: 1742



Да билдер тут ни при чем, просто я взял его окно для примера, чтоб знать, что оно точно есть, а так с любым будет работать, неужели тяжело было просто проверить, или что-то не работает? biggrin.gif
Sl@Sh
Отправлено: 23.10.2004, 19:08


Мастер участка

Группа: Участник
Сообщений: 383



to Gedeon :

Всё работает! Всё класс ! Спасибо за ответ ! Извини, что раньше не поблагодарил, просто попробовал то, что ты написал, недавно.

Я использую этот код в некоторой своей проге и планирую вписать тебя в благодарности. Вопрос : так и написать Gedeon или что-то другое ?
Gedeon
Отправлено: 25.10.2004, 12:06


Ветеран

Группа: Модератор
Сообщений: 1742



Да так и напишите, если хочется, только лучше впишите ссылку на этот сайт.
Sl@Sh
Отправлено: 25.10.2004, 13:06


Мастер участка

Группа: Участник
Сообщений: 383



to Gedeon :

OK

Вернуться в Вопросы программирования в C++Builder