我们在获取IE URL Chain的时候, 可以根据Web Browser之间的关系去获得Parent Window从而组成完整的Chain。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 |
std::wstring IEWebBrowserHelper::GetParentURLFromWebBrowser(CComQIPtr<IWebBrowser2>& web_browser2) { std::wstring parent_url; HRESULT
hr = S_OK; CComPtr<IDispatch> pDisp; hr = web_browser2->get_Document(&pDisp); if
(FAILED(hr)) { //BW_LOG("Fail Get Document"); return
parent_url; } CComQIPtr<IHTMLDocument2> pDoc2 = pDisp; if
(NULL == pDoc2) { //BW_LOG("Fail Query Document"); return
parent_url; } CComQIPtr<IHTMLWindow2> pParentWindow2; hr = pDoc2->get_parentWindow(&pParentWindow2); if
(FAILED(hr) || NULL == pParentWindow2) { //BW_LOG("Fail Get Parent Window"); return
parent_url; } CComQIPtr<IHTMLWindow2> pParentWindow2_A; hr = pParentWindow2->get_parent(&pParentWindow2_A); if
(FAILED(hr) || NULL == pParentWindow2_A) { //BW_LOG("Fail Get Parent Window A"); return
parent_url; } CComQIPtr<IServiceProvider> spServiceProvider = pParentWindow2_A; if
(NULL == spServiceProvider) { //return CComQIPtr<IWebBrowser2>(); return
parent_url; } CComQIPtr<IWebBrowser2> pParentWebBrowser2; hr = spServiceProvider->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, ( void **)&pParentWebBrowser2); //return spWebBrws; if (FAILED(hr) || NULL == pParentWebBrowser2) { return
parent_url; } CComPtr<IDispatch> pParentDocDisp; hr = pParentWebBrowser2->get_Document(&pParentDocDisp); if
(FAILED(hr) || NULL == pParentDocDisp) { //BW_LOG("Fail Get Parent Document"); return
parent_url; } // CComQIPtr<IHTMLDocument2> pParentDoc2 = pParentDocDisp; if
(NULL == pParentDoc2) { //BW_LOG("Fail Query Document"); return
parent_url; } CComBSTR bstrParentUrl; pParentDoc2->get_URL(&bstrParentUrl); parent_url = bstrParentUrl; return
parent_url; } |
[IE][BHO] IE BHO中获取PDF/SWF URL Chain,布布扣,bubuko.com
[IE][BHO] IE BHO中获取PDF/SWF URL Chain
原文:http://www.cnblogs.com/browserplugins/p/3623658.html