Internet Explorer 7+ Аддон для управления вкладками

Начальное замечание: я не программист aC#, но я разработал дополнения / расширения для chrome и firefox, и мне нужно третье расширение для Internet Explorer для проекта, связанного с работой.

Я пытаюсь получить доступ к экземпляру Internet Explorer из расширения BHO в IE. Я использовал следующее в качестве ресурсов:

Итак, у меня есть основной аддон, работающий и тестирующий его, добавив окно предупреждения javascript, когда окно будет загружено.

Моему аддону в конечном итоге придется управлять двумя вкладками (одна выступает в роли хоста, другая - как раб), и последняя упомянутая ссылка имеет к нему отношение, но для браузера требуется дескриптор HWND, и я не уверен, как его получить.,

Похоже, что это может быть под WebBrowser член .Parent но я не знаю, к какому классу мне нужно привести его, чтобы получить ручку IE.

1 ответ

Решение

Таким образом, чтобы получить дескриптор любого браузера или даже любого процесса, уже запущенного на компьютере, вы можете использовать методы FindWindow в:

User32.dll

включив ссылку на него в ваш класс следующим образом:

    // Find by class name and window name
    [DllImport("user32.dll", SetLastError = true)]
    static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

    // Find window name only
    [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
    static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);

и вы можете вызывать их в своем классе следующим образом:

    public FindMyWindow(string classname, string windowName)
    {
        IntPtr hWnd = FindWindow(classname, null);
        // Or do
        hWnd = FindWindowByCaption(IntPtr.Zero, windowName);
    }

Ты можешь использовать

Spy++

Который поставляется с Visual Studio 2010, чтобы найти имя класса, если хотите.

Другие вопросы по тегам