Internet Explorer 7+ Аддон для управления вкладками
Начальное замечание: я не программист aC#, но я разработал дополнения / расширения для chrome и firefox, и мне нужно третье расширение для Internet Explorer для проекта, связанного с работой.
Я пытаюсь получить доступ к экземпляру Internet Explorer из расширения BHO в IE. Я использовал следующее в качестве ресурсов:
- Как начать разработку расширений для Internet Explorer?
- http://www.codeproject.com/Articles/19971/How-to-attach-to-Browser-Helper-Object-BHO-with-C
- http://social.msdn.microsoft.com/Forums/en-US/ieextensiondevelopment/thread/03a8c835-e9e4-405b-8345-6c3d36bc8941 (нужна помощь в этом)
Итак, у меня есть основной аддон, работающий и тестирующий его, добавив окно предупреждения 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, чтобы найти имя класса, если хотите.