[英]Can I list Tabs of a “MozillaWindowClass” HWND via XPCOM?
IE
提供了從IE框架的HWND
輕松訪問IWebBrowser2
和IHtmlDocument2
。 因此,您可以使用EnumWindows
和EnumChildWindows
,然后測試該類,一旦找到正確的類,就可以輕松地與它們進行交互。
是否
HWND
通過XPCOM
和C ++在"MozillaWindowClass"
(具有其HWND
)中列出所有打開的Mozilla Firefox選項卡?
我已經在Google上搜索了很長時間,但是在這個問題上找不到很多東西。 我不想開發擴展程序/附加組件,但希望從不相關的EXE(而不是擴展DLL)外部控制瀏覽器。 或至少有一些只讀訪問權限。
您不能像在IE上使用COM那樣從外部在Firefox中使用C ++ / XPCOM,您只能在擴展的二進制組件中使用C ++ / XPCOM。 因此,如果不編寫擴展名就無法做到這一點,這時偵聽JS中的tab事件並通知二進制組件會更容易。
請注意,在FF中支持二進制組件是PITA,因此我建議您在沒有充分理由的情況下走這條路。
但是,一旦有了擴展名和二進制組件,從選項卡獲取HWND的方法就是這樣(希望它仍然起作用,我們不再支持FF許多版本):
static HWND GetWndHandle(nsIXULWindow * window) {
HWND hwnd = NULL;
nsCOMPtr<nsIDocShell> docshell;
nsresult res = window->GetDocShell(getter_AddRefs(docshell));
if(NS_SUCCEEDED(res)) {
nsCOMPtr<nsIBaseWindow> basewnd(do_QueryInterface(docshell));
if(basewnd) {
res = basewnd->GetParentNativeWindow((nativeWindow*)&hwnd);
if(NS_FAILED(res)) hwnd = NULL;
}
}
return hwnd;
}
有了這個和來自JS的通知,您的二進制組件可以提供查找以通過HWND查找選項卡並對其進行處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.