2012-06-18 88 views
2

首先我注意到,我不是一個C#程序員,但我開發了Chrome和Firefox的插件/擴展,並且我需要爲與工作有關的項目的Internet Explorer第三個擴展。Internet Explorer 7+插件來控制標籤

我想從IE中的BHO擴展訪問Internet Explorer實例。我一直在使用下面的資源:

所以,我有基本的插件工作,並測試它通過在窗口完成加載時注入一個JavaScript警告框。

我的插件最終必須管理兩個選項卡(一個充當主機,另一個充當奴隸),並且last link mentioned處理它,但它需要HWND處理瀏覽器,並且我不確定如何懂嗎。

它看起來像它可能在WebBrowser成員.Parent但我不知道我需要什麼類來轉換它以獲得IE句柄。通過包括

的User32.dll

回答

1

因此,要獲得任何瀏覽器,甚至任何過程已經在計算機上運行的手柄,你可以使用內FindWindow函數方法在你的班級內以下列方式引用它:

// 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); 
    } 

您可以使用

間諜++

附帶了Visual Studio 2010中找到類名,如果你想。

+0

我不反對這個**,但**因爲我正在開發一個IE瀏覽器的插件,並且我知道我應該能夠獲得該插件所附帶的HWND進程,我將您的代碼視爲最後一招hack-ish做事情的方式。我知道必須有一種方法可以從WebBrowser界面中獲得它,我只是不知道如何,而且我對c#不是特別擅長(我正在爲此項目進行學習)。 – OzBarry