2015-01-06 1 views
0

IE은 IE 프레임의 HWND에서 IWebBrowser2IHtmlDocument2에 쉽게 액세스 할 수 있습니다. 그래서 EnumWindowsEnumChildWindows을 테스트 한 다음 클래스를 테스트하고 올바른 클래스를 찾으면 쉽게 상호 작용할 수 있습니다.XPCOM을 통해 "MozillaWindowClass"HWND의 탭을 나열 할 수 있습니까?

, XPCOM와 C를 통해 ++ "MozillaWindowClass"에서 열려있는 모든 모질라 파이어 폭스의 탭을 표시하는 방법이 (그 HWND을 가진) 경우?

나는 길고 강력한 검색 좀했지만 주제에 많이 찾을 수 없습니다. 확장 기능/추가 기능을 개발하고 싶지 않지만 확장 DLL이 아닌 관계없는 EXE에서 브라우저를 외부 적으로 제어하려고합니다. 또는 적어도 읽기 전용으로 액세스 할 수 있습니다. 당신이 IE와 COM을 사용하여 같은

답변

1

당신은 외부에서 파이어 폭스와 C++/XPCOM을 사용할 수 없습니다, 당신은 단지 확장의 바이너리 구성 요소 내에서 C++/XPCOM을 사용할 수 있습니다.확장 기능을 작성하지 않고는이 작업을 수행 할 수 없으므로 JS의 탭 이벤트를 수신하고 이진 구성 요소에 통지하는 것이 더 쉽습니다.

FF의 이진 구성 요소를 지원하는 것은 PITA이므로 충분한 이유없이이 길을 택하는 것은 좋지 않습니다. 이와

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

: 당신이 탭에서 HWND를 얻을 수있는 방법을 확장하고 바이너리 구성 요소를 일단

그러나,이 (여전히 우리가 FF 여러 버전의 지원을 중단, 작동) 희망입니다 JS 바이너리 컴포넌트로부터의 통지는 HWND에 의해 탭을 찾아보고 제공 할 수있다.

관련 문제