Связь между браузером и внешним приложением?(Текущий URL-адрес Chrome и ссылка на Windows?)
-
19-09-2019 - |
Вопрос
Как внешняя программа может взаимодействовать с браузером?Надеюсь, это будет полезно другим:Я перечисляю несколько вариантов, которые я видел или пробовал, пока безуспешно пытался заставить это работать.Если вы знаете о других, пожалуйста, опубликуйте их.
- Если Mac, используйте AppleScript (информация / решение на вопрос 263741, попробуй этот поиск)
- Используйте или создайте расширение для Firefox (иМакрос?, вопрос 410411), Хром (?)
- Используйте Управление веб - браузером для размещения экземпляра IE (несколько советов на вопрос 1143187)
- Если вы являетесь владельцем сайта, это можно сделать с помощью фонового ajax-скрипта
Мой вопрос:как я могу получить текущий URL-адрес браузера переднего плана (в частности, Chrome) и ссылку из внешнего приложения Windows, не изменяя браузер?
Я попытался использовать GetWindowText пользователя 32, который захватывает заголовок (используя jNative для Java).Это часто позволяет мне угадать сервер.Возможно, удастся написать локальный прокси, который будет сопоставлять заголовки с URL-адресами, но это большая работа.Я написал расширение FireFox, чтобы подогнать заголовок окна к этой информации, но оно устарело, и мне все равно нужно это для Chrome сейчас.Я бы предпочел не добавлять мусор в браузер, если только он не является широко полезным.Возможно, я мог бы подать запрос на функцию для API, подобного applescript, для Chrome в Windows. Информация об окне AHK 1.7 удается захватить URL-адрес (но не реферер) в разделе видимый / скрытый текст, но я понятия не имею, как перенести код, который он использует.
(Некоторая информация для FF / C # в вопрос 990409 & здесь, некоторая информация об IE на вопрос.823755 (перенаправляет на вопрос 352236).Нет информации по адресу вопрос 1107978.Игнорируй это: Сопутствующие вопросы:Как я могу управлять firefox с помощью макроса?Как я могу получить информацию о браузере?Как я могу получить текущий URL-адрес браузера?Как я могу получить текущий URL-адрес Chrome из внешнего приложения?)
Идеи, образцы кода, указатели на потенциально релевантные вопросы и ответы на мой конкретный вопрос - все это приветствуется.
Решение
Быстрое и грязное решение (вы можете преобразовать его из Delphi на свой язык):
var
h : HWND;
pCh : array [0..255] of char;
begin
Result := '';
h := GetForegroundWindow; // or pass main Chrome window here
if h = 0 then exit;
h := GetWindow(h,GW_CHILD);
if h = 0 then exit;
h := GetWindow(h,GW_HWNDNEXT);
if h = 0 then exit;
SendMessage(h, WM_GETTEXT, SizeOf(pCh), integer(@pCh)) ;
Result := pCh; // <-- URL is here!
end;
Спасибо за вопрос ;) - просто добавлено к нашему рабочему времени - программное обеспечение для отслеживания времени