Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/65: Рейтинг темы: голосов - 65, средняя оценка - 4.89
1 / 1 / 1
Регистрация: 11.08.2009
Сообщений: 43

Получить URL из адресной строки браузера

12.11.2009, 20:14. Показов 13523. Ответов 48
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здрасте.
Можно ли как либо узнать что написано в поле "Адрес" в браузере.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.11.2009, 20:14
Ответы с готовыми решениями:

Как изменить URL в адресной строке браузера
Привет всем! Помогите с решением: Как изменить URL в адресной строке браузера? На пример Opera. Тоесть нужно изменить значение в адресной...

Дружественный URL для пользователя в адресной строке браузера
Всем здравствуйте! Возникла проблема при реализации дружественного URL для пользователя в адресной строке браузера. Перерыл много чего...

чистка адресной строки браузера
привет. не могу почистить эту строку. там полно адресов на целую страницу. как их убрать. Где то читал что при чистке убираются и сокейты....

48
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 40
24.12.2014, 11:13
Студворк — интернет-сервис помощи студентам
Я пытался сделать еще так (*код*),
но этот код работает лишь с Мозилой.
C++
1
2
3
4
5
HWND fore = FindWindow(_T("Chrome_WidgetWin_1"), NULL);
 
TCHAR szTitle[MAX_PATH] = {0};
::SendMessage(fore, WM_GETTEXT, MAX_PATH, LPARAM(szTitle));
Edit2->Text = String(szTitle);
Добавлено через 1 час 26 минут
С заголовком разобрался. Правда, мой способ был немножко извращенным, но работал.
Простое, я бы даже сказал, красивое решение я нашел на этом форуме. Вот код, может пригодиться.
Теперь осталося выудить URL.
C++
1
2
3
4
HWND fore = ::GetForegroundWindow();
TCHAR szTitle[MAX_PATH] = {0};
::SendMessage(fore, WM_GETTEXT, MAX_PATH, LPARAM(szTitle));
Edit2->Text = String(szTitle);
0
place status here
 Аватар для gunslinger
3187 / 2221 / 640
Регистрация: 20.07.2013
Сообщений: 6,017
24.12.2014, 16:30
Проблема в том, что если окно не будет на переднем плане, то ничего и не найдется.
Только не понимаю разницы между кодами: (в первом примере) поиск окна по его классу проходит успешно, остальная часть кода одинакова. Но результат разный.
0
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 40
24.12.2014, 18:17
Цитата Сообщение от gunslinger Посмотреть сообщение
Проблема в том, что если окно не будет на переднем плане, то ничего и не найдется.
Проблему с активным окном решу просто - будет таймер, который через достаточное количество времени автоматически вытащит все нужные мне данные и не нужно будет работать с самой формой в тот момент.

Цитата Сообщение от gunslinger Посмотреть сообщение
Только не понимаю разницы между кодами: (в первом примере) поиск окна по его классу проходит успешно, остальная часть кода одинакова. Но результат разный.
Разные результаты мне тоже не до конца понятны.

Я,кстати,еще один способ пробовал, но мне почему-то выдаёт ошибки. Здесь тоже, как бы по класу идет поиск, но оно сразу и URL и title находит.

Что думаете по этому поводу?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include "stdafx.h"
#include "windows.h"
#include <iostream>
 
using namespace std;
 
HWINEVENTHOOK LHook = 0;
 
void CALLBACK WinEventProc(HWINEVENTHOOK hWinEventHook, DWORD event, HWND hwnd, LONG idObject, LONG idChild, DWORD dwEventThread, DWORD dwmsEventTime) {
    IAccessible *pAcc = NULL; // здесь ошибка. Не нравиться компилятору объявление переменной.
    VARIANT varChild;
    HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &pAcc, &varChild);  // здесь тоже
    if ((hr == S_OK) && (pAcc != NULL)) {
        BSTR bstrName, bstrValue;
        pAcc->get_accValue(varChild, &bstrValue);
        pAcc->get_accName(varChild, &bstrName);
 
        wchar_t className[50];
 
        GetClassName(hwnd, className, 50); // вызываю ф-цию для конвертирования.
        
        wchar_t_to_char(className);
 
        if ((strcmp(className, "Chrome_WidgetWin_1") == 0) && (wcscmp(bstrName, L"Address and search bar") == 0)) { // здесь тоже ошибка - несовместимось типов.
            printf("URL change: %ls\n", bstrValue);
        }
        pAcc->Release();
    }
}
 
CHAR wchar_t_to_char(wchar_t *some_parametr) // конвертирую wchar_t в char
{
   
    return CHAR(some_parametr);
}
 
 
void Hook() {
    if (LHook != 0) return;
    CoInitialize(NULL);
    LHook = SetWinEventHook(EVENT_OBJECT_FOCUS, EVENT_OBJECT_VALUECHANGE, 0, WinEventProc, 0, 0, WINEVENT_SKIPOWNPROCESS);
}
 
void Unhook() {
    if (LHook == 0) return;
    UnhookWinEvent(LHook);
    CoUninitialize();
}
 
int main(int argc, const char* argv[]) {
    MSG msg;
    Hook();
 
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    Unhook();
    return 0;
}
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
24.12.2014, 18:36
Цитата Сообщение от Lucky One Посмотреть сообщение
IAccessible *pAcc = NULL; // здесь ошибка. Не нравиться компилятору объявление переменной.
Хедер Oleacc.h подключен?
1
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 40
25.12.2014, 11:37
Я воспользовался подсказкой BRcr и с этой проблемой покончено. Также я разобрался с переобразованием типов. К сожалению, появилась новая проблема.

Компилятор выдает ошибку " Unresolved external AccessibleObjectFromEvent referenced from D\... ".
Я уже перепробовал все методы, которые смог найти. Ничего не помогло. Такую же по смыслу ошибку выдает компилятор Visual Studio'12, что очень подозрительно...
В чем может быть дело?

0
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 40
25.12.2014, 16:01
И вопрос вдогонку :
Поскольку обращение через имя класса работает со всеми браузерами(не слишком ли громко сказано?),по-идеи, этот код может быть использован для любого браузера?

Добавлено через 4 часа 20 минут
gunslinger, может вы сталкивались с подобным? Я даже библиотеки( подключал их так: #pragma comment(lib, "libcpmt.lib")) специальные качал - не помогло.

Хотелось бы заставить этот метод работать, так как он, думаю, универсален для всех браузеров.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
25.12.2014, 16:37
Конвертацию wchar_t_to_char выбрось сразу, это мусор. Используй уж тогда функцию wcscmp...

Линковщик у меня не ругается, код компилируется... возможно, у тебя билдер песком сыплется? Тогда, может быть, явно залинковать надо:
C++
1
#pragma link "Oleacc.lib"
1
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 40
25.12.2014, 18:17
BRcr,
Цитата Сообщение от BRcr Посмотреть сообщение
Конвертацию wchar_t_to_char выбрось сразу, это мусор. Используй уж тогда функцию wcscmp...
Я её плохо реализовал, или она здесь не нужна по вообще?

Цитата Сообщение от BRcr Посмотреть сообщение
Линковщик у меня не ругается, код компилируется... возможно, у тебя билдер песком сыплется? Тогда, может быть, явно залинковать надо:
Возможно, проблема с компилятором так как после явной линковки вылезла вылезла другая ошибка. Не может открыть файл Oleacc.lib. Файл скачал, кинул в папку с проектом. Та же история с другими библиотеками.



У меня просьба : можете посмотреть, работает ли данный код с Хромом (
должен показывать изменения адреса активной страницы) и ,по возможности,сделать скрин, буду очень признателен.

Интересно знать,в чем проблема : в программе или в Билдере.

Кстати, класс Хрома такой, как в моём коде или Chrome_OmniboxView/Chrome_AutocompleteEditView ?

И вопрос : я мог просто "загонять" Билдер чуть ли не бесконечным количеством переписываний кода и запусков проекта?
0
0 / 0 / 0
Регистрация: 21.02.2015
Сообщений: 3
22.02.2015, 10:56
Удалось разобраться как получить урл для оперы(хрома)?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.02.2015, 10:56
Помогаю со студенческими работами здесь

Аналог адресной строки браузера
Делаю браузер на C#. Хочу сделать поисковую строку как в Хроме (то есть если ввести адрес в текстбокс, то он должен переходить по нему, а...

Как извлечь URL из адресной строки?
Здравствуйте! Скажите, как извлекать и сохранять адрес из адресной строки браузера Фаерфокс, пользуясь imacroso'm? Какая команда нужна для...

Изменить текст адресной строки браузера
Помогите пожалуйста , нужно чтобы программа могла изменить текст адресной строки браузера , как сделать не знаю. И еще не знаете как...

Взять параметр из адресной строки браузера
Как взять параметр из адресной строки браузера? Есть ссылка на главной странице(диалоги), адрес ссылки такой...

убрать .php с адресной строки браузера htaccess
Здравствующие. Много информации пересмотрел в интернете и не получается в адресной строке браузера убрать .php Сайт без CMS. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
49
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru