4

Я написал расширение Chrome (с NPAPI), которое позволяет моему приложению и Chrome общаться друг с другом. Все это в основном работает нормально.Получить ручку окна вкладки Chrome изнутри расширения?

Теперь я пытаюсь связать HWND окна Chrome с конкретным идентификатором окна ID &.

Когда я нахожусь внутри Chrome (через плагин), у меня есть идентификатор и идентификатор окна, и я могу сделать большинство операций на основе этого.

Когда я вне Chrome (через мое приложение), я вижу структуру окна и получаю HWND различных вкладок.

Есть ли способ, которым я могу связать их вместе надежно, чтобы мое приложение могло сообщить Chrome о том, чтобы получить информацию о/с определенной вкладки?

+0

Какая информация вам нужна? –

+0

Такой подход будет хрупким, поскольку он зависит от деталей реализации браузера. Что именно вы хотите достичь с этим? –

+0

Для краткосрочного сценария мне нужно иметь возможность сказать, что, когда мое приложение сталкивается с окном Chrome, оно может каким-то образом использовать HWND, чтобы спросить плагин для получения информации об этом конкретном окне/вкладке. Нет никакого способа (я могу видеть), чтобы получить TabID/WindowID вне плагина ... и никак не получить HWND внутри плагина. Поэтому я просто пытаюсь понять, как связать эти фрагменты информации вместе. – Tim

ответ

2

Если у вас есть Spy ++, вы увидите, что названия сайтов остаются совместимыми с заголовками табуляции. Вы должны обязательно использовать это.

Для устранения конфликтов имен просто позвоните chrome.tabs.query() и chrome.tabs.update() с расширением, чтобы сохранить, изменить и восстановить заголовок табуляции. Затем используйте GetCurrentProcess() и EnumWindows()/WindowEnumProc(), чтобы получить иерархию дочерних окон и соответствовать вашему пользовательскому заголовку. Вам нужно будет передать его функции обратного вызова EnumWindowsProc.

+0

Я не знаю, как это сделать был в то время, но теперь вы можете получить только заголовок выбранной вкладки, а не всех из них. – nicolausYes