2012-06-18 3 views
2

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

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

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

Мой аддон, в конечном счете, должен будет управлять двумя вкладками (один действует как хост, другой - подчиненный), а last link mentioned имеет дело с ним, но для этого требуется ручка 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, чтобы найти имя класса, если вы хотите.

+0

Я не против этого **, но **, так как я разрабатываю плагин только для IE, и я знаю, что должен получить процесс HWND, к которому подключается плагин, я вижу ваш код как последний способ взломать вещи. Я знаю, что должен быть способ получить его из интерфейса WebBrowser, я просто не знаю, как это сделать, и я не особенно хорош в C# (на самом деле я участвую в этом проекте). – OzBarry