2010-04-08 77 views
0

我正在使用C++编写Firefox扩展。在C++中获取标签URL

我正在枚举这些标签以获取它们各自的URL。

以下是伪代码:

nsCOMPtr<nsIWindowMediator> windowMediator = do_GetService(NS_WINDOWMEDIATOR_CONTRACTID, &rv); 
windowMediator->GetMostRecentWindow(L"navigator:browser", getter_AddRefs(dwi)); 
dwi->GetDocument(getter_AddRefs(doc)); 
nsCOMPtr<nsIDOMDocumentXBL> xbl(do_QueryInterface(doc)); 
doc->GetElementById(NS_LITERAL_STRING("content"), getter_AddRefs(domEl)); 
nsCOMPtr<nsIDOMElement> pAnoEl; 
xbl->GetAnonymousElementByAttribute(
           domEl, 
           NS_LITERAL_STRING("anonid"), 
           NS_LITERAL_STRING("tabcontainer"), 
           getter_AddRefs(pAnoEl) 
           ); 
nsString retval; 
PRBool bRet = 0; 
nsCOMPtr<nsIDOMNodeList> nodeList; 
pAnoEl->GetChildNodes(getter_AddRefs(nodeList)); 
nsCOMPtr<nsIDOMNode> domNode; 
rv = nodeList->GetLength(&len); 
for (PRUint32 i = 0; i < len; i++) 
{ 
    nodeList->Item(i, getter_AddRefs(domNode)); 
    nsCOMPtr<nsIDOMXULElement> xulElement = do_QueryInterface(domNode); 
    nsCOMPtr<nsIBoxObject> boxObject; 
    xulElement->GetBoxObject(getter_AddRefs(boxObject)); 
    nsCOMPtr<nsIBrowserBoxObject> browserboxObject = do_QueryInterface(boxObject); 
} 

在上面的代码的QueryInterface获得nsIBrowserBoxObject失败,错误代码:NS_ERROR_NO_INTERFACE。

请向我推荐获取标签网址的方法。

帮帮我!!!

谢谢, Vaibhav。

回答