2011-10-03 16 views
9

के साथ पॉपअप जानकारी प्राप्त करें मैं सिस्टम का उपयोग कर रहा हूं। Windows.Forms.WebBrowser नियंत्रण URL पर जाने के लिए। कुछ यूआरएल पॉपअप को ट्रिगर करते हैं जो वेबब्राउज़र की बजाय आईई में खुलते हैं। मुझे बहुत परवाह नहीं है कि वे कहां खुलते हैं। लेकिन किसी भी तरह पॉपअप के यूआरएल को खोजने का सबसे महत्वपूर्ण लक्ष्य है। मैं वेब पर "न्यूविंडो 2" घटना के संदर्भ देख रहा हूं। मुझे यकीन नहीं है कि यह कितना संबंधित है, लेकिन मुझे नहीं पता कि इसका उपयोग कैसे करें/इसे कहां मिलना है, क्योंकि WebBrowser में न्यूविंडो 2 ईवेंट नहीं है, केवल एक न्यूविंडो ईवेंट है।वेबब्रोसर

कोई विचार?

धन्यवाद!

संपादित

Web_V1.NewWindow घटना केवल एक हद तक काम करता है। सभी पॉपअप का पता नहीं लगाया जा रहा है। और कुछ यूआरएल केवल "खाली: खाली" के रूप में आते हैं। पूर्व। इसे http://www.thedailybeast.com/ पर प्रयोग करें। (किसी को भी पॉपअप की कुख्यात मात्रा वाले किसी अन्य साइट को पता है?)

क्या कोई वेबब्राउज़र पॉपअप के परिणामी पृष्ठ का पता लगाने के लिए कैच-ऑल तरीका जानता है?

उत्तर

2

यहां पहले उत्तर दिया गया प्रश्न है कि मेरा मानना ​​है कि आपको समाधान मिलेगा। (सी # संस्करण के लिए कोड विंडो नीचे स्क्रॉल करें)।

System.Windows.Forms.WebBrowser open links in same window or new window with same session

शायद यह परियोजना अपने लक्ष्यों के साथ तुम्हारी मदद करेगा पॉपअप को संभालने के लिए: http://www.codeproject.com/KB/cpp/ExtendedWebBrowser.aspx#GoalBlock

+0

आपकी सहायता के लिए धन्यवाद, लेकिन मुझे नहीं लगता कि मैं पॉपअप के यूआरएल को जानने के लिए उस कोड का उपयोग कैसे कर सकता हूं। एक बार जब मैं न्यूविंडो ईवेंट में जोड़ता हूं, तो पॉपअप कहां संग्रहीत होते हैं? – carlbenson

+0

यूआरएल ईवेंट हैंडलर में "यूआरएल" लेबल वाली स्ट्रिंग में होना चाहिए। उदाहरण में इसे "Web_V1_NewWindow" कहा गया था –

1
webBrowser1.Navigating += (sndr, ee) => 
{ 
    MessageBox.Show(ee.Url.DnsSafeHost + "\n" + ee.Url.ToString()); 
}; 

webBrowser1.Navigate("http://www.thedailybeast.com/"); 
0

नेट ढांचे से आवरण अंतर्निहित देशी webbrowser नियंत्रण के सभी क्षमताओं का खुलासा नहीं करता। ..

इसके लिए आपको स्वयं को उस नियंत्रण को लपेटना होगा - एक कठिन कार्य जो पहले से ही धन्यवाद का स्वागत कर रहा है ... पूर्ण स्रोत कोड और विवरण के लिए 01 देखें

यह "पूर्ण आवरण" उदाहरण के NewWindow2 जो आप ऊपर उल्लेख के लिए होता है ...

एक अन्य विकल्प जो भी एक खिड़की-कम मोड का समर्थन करता है और इस तरह सभी प्रकार के कर के लिए आदर्श है http://awesomium.com/ के माध्यम से क्रोम का उपयोग किया जाएगा ब्राउज़र सामग्री की प्रोग्रामिंग ...

+0

यदि .NET पहले से ही न्यूविंडो 2 हैंडलिंग प्रदान करता है तो मुझे नए रैपर नियंत्रण की आवश्यकता क्यों है?क्या पॉपअप जो वर्तमान में न्यूविंडो घटना को ट्रिगर नहीं कर रहे हैं, उस रैपर द्वारा पकड़ा जाएगा? – carlbenson

+0

कि रैपर .NET बिल्ट-इन रैपर की तुलना में बहुत अधिक है ... आईई के कुछ 0day-शोषण से बहुत कम यह आपको एमएस से आईई नियंत्रण जो कुछ भी करने के लिए मूल कोड करने की अनुमति देता है (जो बहुत अधिक है .NET wrapper से!) ... बस लिंक का पालन करें ... लेखक मतभेदों का वर्णन विस्तृत रूप से विस्तृत करता है ... – Yahia

+0

न्यूविंडो 2 पहले ही वेबब्रोसर नियंत्रण द्वारा संभाला गया है और न्यूविंडो .NET ईवेंट उठाता है। ऐसी सारी चीजें हैं जिन्हें संपूर्ण वेबब्राउज़र नियंत्रण के साथ पूरी सामग्री को फिर से कार्यान्वित किए बिना tweaked किया जा सकता है। –

4

एक अच्छा पॉपअप परीक्षक http://www.popuptest.com है।

WebBrowser न्यूविंडो इवेंट वास्तव में अंतर्निहित NewWindow2 ईवेंट पर लगा हुआ है। न्यूविंडो ठीक काम करता है, लेकिन यह आपको यूआरएल नहीं देता है जहां नई विंडो चल रही है।

आईई 6 के बाद से, NewWindow3 उपलब्ध है, लेकिन यह वेबब्रोसर द्वारा खुलासा नहीं किया गया है। हालांकि, यहां एक नमूना कोड है जो दिखाता है कि इसका उपयोग कैसे करें। NewWindow3 ईवेंट हैंडलर में, आप सभी पॉपअप और संबंधित यूआरएल देखेंगे।

// test code 
    private void button1_Click(object sender, EventArgs e) 
    { 
     _events = new WebBrowserEvents(_wb); // register event sink, make sure ActiveXInsance is not null here 

     _wb.Navigate("http://www.popuptest.com/"); 
    } 

// this event sink declares the NewWindow3 event 
public class WebBrowserEvents : StandardOleMarshalObject, DWebBrowserEvents2, IDisposable 
{ 
    private AxHost.ConnectionPointCookie _cookie; 

    public WebBrowserEvents(WebBrowser wb) 
    { 
     _cookie = new AxHost.ConnectionPointCookie(wb.ActiveXInstance, this, typeof(DWebBrowserEvents2)); 
    } 

    void DWebBrowserEvents2.StatusTextChange(string text) 
    { 
     Trace.WriteLine("StatusTextChange text:" + text); 
    } 

    void DWebBrowserEvents2.ProgressChange(int progress, int progressMax) 
    { 
     Trace.WriteLine("ProgressChange progress:" + progress + " progress:" + progressMax); 
    } 

    void DWebBrowserEvents2.CommandStateChange(int command, bool enable) 
    { 
     Trace.WriteLine("CommandStateChange command:" + command + " enable:" + enable); 
    } 

    void DWebBrowserEvents2.DownloadBegin() 
    { 
     Trace.WriteLine("DownloadBegin"); 
    } 

    void DWebBrowserEvents2.DownloadComplete() 
    { 
     Trace.WriteLine("DownloadComplete"); 
    } 

    void DWebBrowserEvents2.TitleChange(string text) 
    { 
     Trace.WriteLine("TitleChange text:" + text); 
    } 

    void DWebBrowserEvents2.PropertyChange(string szProperty) 
    { 
     Trace.WriteLine("PropertyChange szProperty:" + szProperty); 
    } 

    void DWebBrowserEvents2.BeforeNavigate2(object pDisp, ref object URL, ref object flags, ref object targetFrameName, ref object postData, ref object headers, ref bool cancel) 
    { 
     Trace.WriteLine("BeforeNavigate2 URL:" + URL); 
    } 

    void DWebBrowserEvents2.NewWindow2(ref object pDisp, ref bool cancel) 
    { 
     Trace.WriteLine("NewWindow2"); 
    } 

    void DWebBrowserEvents2.NavigateComplete2(object pDisp, ref object URL) 
    { 
     Trace.WriteLine("NavigateComplete2 URL:" + URL); 
    } 

    void DWebBrowserEvents2.DocumentComplete(object pDisp, ref object URL) 
    { 
     Trace.WriteLine("DocumentComplete URL:" + URL); 
    } 

    void DWebBrowserEvents2.OnQuit() 
    { 
     Trace.WriteLine("OnQuit"); 
    } 

    void DWebBrowserEvents2.OnVisible(bool visible) 
    { 
     Trace.WriteLine("OnVisible visible:" + visible); 
    } 

    void DWebBrowserEvents2.OnToolBar(bool toolBar) 
    { 
     Trace.WriteLine("OnToolBar toolBar:" + toolBar); 
    } 

    void DWebBrowserEvents2.OnMenuBar(bool menuBar) 
    { 
     Trace.WriteLine("OnMenuBar menuBar:" + menuBar); 
    } 

    void DWebBrowserEvents2.OnStatusBar(bool statusBar) 
    { 
     Trace.WriteLine("OnStatusBar statusBar:" + statusBar); 
    } 

    void DWebBrowserEvents2.OnFullScreen(bool fullScreen) 
    { 
     Trace.WriteLine("OnFullScreen fullScreen:" + fullScreen); 
    } 

    void DWebBrowserEvents2.OnTheaterMode(bool theaterMode) 
    { 
     Trace.WriteLine("OnTheaterMode theaterMode:" + theaterMode); 
    } 

    void DWebBrowserEvents2.WindowSetResizable(bool resizable) 
    { 
     Trace.WriteLine("WindowSetResizable resizable:" + resizable); 
    } 

    void DWebBrowserEvents2.WindowSetLeft(int left) 
    { 
     Trace.WriteLine("WindowSetLeft left:" + left); 
    } 

    void DWebBrowserEvents2.WindowSetTop(int top) 
    { 
     Trace.WriteLine("WindowSetTop top:" + top); 
    } 

    void DWebBrowserEvents2.WindowSetWidth(int width) 
    { 
     Trace.WriteLine("WindowSetWidth width:" + width); 
    } 

    void DWebBrowserEvents2.WindowSetHeight(int height) 
    { 
     Trace.WriteLine("WindowSetHeight height:" + height); 
    } 

    void DWebBrowserEvents2.WindowClosing(bool isChildWindow, ref bool cancel) 
    { 
     Trace.WriteLine("WindowClosing isChildWindow:" + isChildWindow); 
    } 

    void DWebBrowserEvents2.ClientToHostWindow(ref int cx, ref int cy) 
    { 
     Trace.WriteLine("ClientToHostWindow cx:" + cx + " cy:" + cy); 
    } 

    void DWebBrowserEvents2.SetSecureLockIcon(int secureLockIcon) 
    { 
     Trace.WriteLine("SetSecureLockIcon secureLockIcon:" + secureLockIcon); 
    } 

    void DWebBrowserEvents2.FileDownload(ref bool cancel) 
    { 
     Trace.WriteLine("FileDownload"); 
    } 

    void DWebBrowserEvents2.NavigateError(object pDisp, ref object URL, ref object frame, ref object statusCode, ref bool cancel) 
    { 
     Trace.WriteLine("NavigateError url:" + URL); 
    } 

    void DWebBrowserEvents2.PrintTemplateInstantiation(object pDisp) 
    { 
     Trace.WriteLine("PrintTemplateInstantiation"); 
    } 

    void DWebBrowserEvents2.PrintTemplateTeardown(object pDisp) 
    { 
     Trace.WriteLine("PrintTemplateTeardown"); 
    } 

    void DWebBrowserEvents2.UpdatePageStatus(object pDisp, ref object nPage, ref object fDone) 
    { 
     Trace.WriteLine("UpdatePageStatus"); 
    } 

    void DWebBrowserEvents2.PrivacyImpactedStateChange(bool bImpacted) 
    { 
     Trace.WriteLine("PrivacyImpactedStateChange bImpacted:" + bImpacted); 
    } 

    void DWebBrowserEvents2.NewWindow3(ref object pDisp, ref bool cancel, int dwFlags, ref object bstrUrlContext, ref object bstrUrl) 
    { 
     Trace.WriteLine("NewWindow3 bstrUrlContext:" + bstrUrlContext + " bstrUrl:" + bstrUrl); 
    } 

    public void Dispose() 
    { 
     if (_cookie != null) 
     { 
      _cookie.Disconnect(); 
      _cookie = null; 
     } 
    } 
} 

[ComImport, Guid("34A715A0-6587-11D0-924A-0020AFC7AC4D"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] 
internal interface DWebBrowserEvents2 
{ 
    [DispId(0x66)] 
    void StatusTextChange([In] string text); 
    [DispId(0x6c)] 
    void ProgressChange([In] int progress, [In] int progressMax); 
    [DispId(0x69)] 
    void CommandStateChange([In] int command, [In] bool enable); 
    [DispId(0x6a)] 
    void DownloadBegin(); 
    [DispId(0x68)] 
    void DownloadComplete(); 
    [DispId(0x71)] 
    void TitleChange([In] string text); 
    [DispId(0x70)] 
    void PropertyChange([In] string szProperty); 
    [DispId(250)] 
    void BeforeNavigate2([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp, [In] ref object URL, [In] ref object flags, [In] ref object targetFrameName, [In] ref object postData, [In] ref object headers, [In, Out] ref bool cancel); 
    [DispId(0xfb)] 
    void NewWindow2([In, Out, MarshalAs(UnmanagedType.IDispatch)] ref object pDisp, [In, Out] ref bool cancel); 
    [DispId(0xfc)] 
    void NavigateComplete2([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp, [In] ref object URL); 
    [DispId(0x103)] 
    void DocumentComplete([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp, [In] ref object URL); 
    [DispId(0xfd)] 
    void OnQuit(); 
    [DispId(0xfe)] 
    void OnVisible([In] bool visible); 
    [DispId(0xff)] 
    void OnToolBar([In] bool toolBar); 
    [DispId(0x100)] 
    void OnMenuBar([In] bool menuBar); 
    [DispId(0x101)] 
    void OnStatusBar([In] bool statusBar); 
    [DispId(0x102)] 
    void OnFullScreen([In] bool fullScreen); 
    [DispId(260)] 
    void OnTheaterMode([In] bool theaterMode); 
    [DispId(0x106)] 
    void WindowSetResizable([In] bool resizable); 
    [DispId(0x108)] 
    void WindowSetLeft([In] int left); 
    [DispId(0x109)] 
    void WindowSetTop([In] int top); 
    [DispId(0x10a)] 
    void WindowSetWidth([In] int width); 
    [DispId(0x10b)] 
    void WindowSetHeight([In] int height); 
    [DispId(0x107)] 
    void WindowClosing([In] bool isChildWindow, [In, Out] ref bool cancel); 
    [DispId(0x10c)] 
    void ClientToHostWindow([In, Out] ref int cx, [In, Out] ref int cy); 
    [DispId(0x10d)] 
    void SetSecureLockIcon([In] int secureLockIcon); 
    [DispId(270)] 
    void FileDownload([In, Out] ref bool cancel); 
    [DispId(0x10f)] 
    void NavigateError([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp, [In] ref object URL, [In] ref object frame, [In] ref object statusCode, [In, Out] ref bool cancel); 
    [DispId(0xe1)] 
    void PrintTemplateInstantiation([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp); 
    [DispId(0xe2)] 
    void PrintTemplateTeardown([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp); 
    [DispId(0xe3)] 
    void UpdatePageStatus([In, MarshalAs(UnmanagedType.IDispatch)] object pDisp, [In] ref object nPage, [In] ref object fDone); 
    [DispId(0x110)] 
    void PrivacyImpactedStateChange([In] bool bImpacted); 
    [DispId(0x111)] 
    void NewWindow3([In, Out, MarshalAs(UnmanagedType.IDispatch)] ref object pDisp, [In, Out] ref bool cancel, [In] int dwFlags, [In] ref object bstrUrlContext, [In] ref object bstrUrl); 
} 
संबंधित मुद्दे