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

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

12.11.2009, 20:14. Показов 13981. Ответов 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
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,028
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
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru