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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2008, 09:46   #1
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,218
По умолчанию Поиск активного окна

Есть некоторое приложение (конкретно: браузер Опера).
Может быть запущено сразу несколько окон. Как можно найти активное в данный момент окно браузера?
Arigato вне форума Ответить с цитированием
Старый 21.11.2008, 11:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

GetActiveWindow ?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2008, 12:15   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,218
По умолчанию

Вопрос решился использованием функции GetForegroundWindow
GetActiveWindow как-то не так работает.
Arigato вне форума Ответить с цитированием
Старый 21.11.2008, 16:32   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,218
По умолчанию

Продолжу тему. И так, если у нас открыта Опера, я получаю hwnd этого окна. Теперь мне надо узнать, какой адрес находится в адресной строке.
Но если я прохожу по всем дочерним окнам, а в Опере открыто несколько вкладок, то я получаю несколько адресных строк с разными адресами. Как бы узнать, какая из вкладок является активной?
Arigato вне форума Ответить с цитированием
Старый 22.11.2008, 13:17   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,218
По умолчанию

Немного переформулирую вопрос.
Мне нужно получить URL, набранный в адресной строке браузера Опера. Как такое сделать? Уже второй день бьюсь над этим...
Arigato вне форума Ответить с цитированием
Старый 22.11.2008, 18:32   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,218
По умолчанию

Задача решена. Если кому потребуется, вот решение:
Код:
uses DdeMan;
function GetURL(Browser: string): string;
var
 Client_DDE: TDDEClientConv;
 temp: PChar;
begin
 Result := '';
 Client_DDE:= TDDEClientConv.Create( nil );
 with Client_DDE do
  begin
   SetLink(Browser, 'WWW_GetWindowInfo');
   temp := RequestData('0xFFFFFFFF');
   Result := StrPas(temp);
  // Return only the URL part
   Delete(Result, Pos(',', Result), Length(Result)-Pos(',', Result)+1);
   // Remove quotes
   Delete(Result, 1, 1);
   Delete(Result, Length(Result), 1);
   // ************
   StrDispose(temp);
   CloseLink;
  end;
 Client_DDE.Free;
end;
WriteLn (GetURL ('Opera'));
Arigato вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и копирование текста из консольного окна Mago Паскаль, Turbo Pascal, PascalABC.NET 8 25.07.2008 15:04
У меня возникла небольшая проблемка с определением последнего активного окна. hoza_syl Помощь студентам 6 23.05.2008 17:03
Поиск окна NoName_emaNoN Win Api 4 25.11.2007 19:37
Могут ли обрабатывать нажатия клавиш окна, отличные от активного? Gorlum Общие вопросы Delphi 14 27.10.2007 17:28