Связь между браузером и внешним приложением?(Текущий URL-адрес Chrome и ссылка на Windows?)

StackOverflow https://stackoverflow.com/questions/1317465

Вопрос

Как внешняя программа может взаимодействовать с браузером?Надеюсь, это будет полезно другим:Я перечисляю несколько вариантов, которые я видел или пробовал, пока безуспешно пытался заставить это работать.Если вы знаете о других, пожалуйста, опубликуйте их.


Мой вопрос:как я могу получить текущий 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;

Спасибо за вопрос ;) - просто добавлено к нашему рабочему времени - программное обеспечение для отслеживания времени

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top