2013-07-17 5 views
7

मैं wpf WebBrowser नियंत्रण (System.Windows.Controls) का उपयोग कर रहा हूं और मुझे उपयोगकर्ताओं को फ़ाइलों या प्रिंटिंग पृष्ठों को डाउनलोड करने जैसी विभिन्न कार्रवाइयां करने से रोकने की आवश्यकता है। मैंने इंटरनेट एक्सप्लोरर विकल्पों (सुरक्षा टैब -> कस्टम स्तर -> डाउनलोड -> फ़ाइल डाउनलोड) में फ़ाइल डाउनलोड विकल्प अक्षम कर दिया है। इसके कारण, एक पीडीएफ लिंक पर क्लिक करने के बाद, फ़ाइल डाउनलोड पॉपअप के बजाय मुझे ऐसे संदेश के साथ पॉपअप मिलता है: "आपकी वर्तमान सुरक्षा सेटिंग्स इस फ़ाइल को डाउनलोड करने की अनुमति नहीं देती हैं"।आईई 10 - कैसे रोकें "आपकी वर्तमान सुरक्षा सेटिंग्स इस फ़ाइल को डाउनलोड करने की अनुमति नहीं देती" पॉपअप दिखाई देने से?

क्या इस संदेश को होने से रोकने का कोई तरीका है? मैं सिर्फ उपयोगकर्ता परिप्रेक्ष्य से कोई कार्रवाई नहीं करना चाहता हूं। मैं आईई 10 का उपयोग करता हूं।

उत्तर

9

WPF WebBrowser वेबब्रोसर ActiveX नियंत्रण के आसपास बहुत सीमित (अभी तक अतुलनीय, sealed) रैपर है। सौभाग्य से, एक हैक है जिसका उपयोग हम अंतर्निहित ActiveX ऑब्जेक्ट प्राप्त करने के लिए कर सकते हैं (नोट यह .NET के भविष्य के संस्करणों में बदल सकता है)। यहाँ एक फ़ाइल डाउनलोड ब्लॉक करने का तरीका बताया गया है:

using System.Reflection; 
using System.Windows; 

namespace WpfWbApp 
{ 
    // By Noseratio (http://stackoverflow.com/users/1768303/noseratio) 

    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 

      this.WB.Loaded += (s, e) => 
      { 
       // get the underlying WebBrowser ActiveX object; 
       // this code depends on SHDocVw.dll COM interop assembly, 
       // generate SHDocVw.dll: "tlbimp.exe ieframe.dll", 
       // and add as a reference to the project 

       var activeX = this.WB.GetType().InvokeMember("ActiveXInstance", 
        BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic, 
        null, this.WB, new object[] { }) as SHDocVw.WebBrowser; 

       // now we can handle previously inaccessible WB events 
       activeX.FileDownload += activeX_FileDownload; 
      }; 

      this.Loaded += (s, e) => 
      { 
       this.WB.Navigate("http://technet.microsoft.com/en-us/sysinternals/bb842062"); 
      }; 
     } 

     void activeX_FileDownload(bool ActiveDocument, ref bool Cancel) 
     { 
      Cancel = true; 
     } 
    } 
} 

XAML:

<Window x:Class="WpfWbApp.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 

    <WebBrowser Name="WB"/> 

</Window> 
+0

मैं अगले हफ्ते की शुरुआत में अपने समाधान की कोशिश करेंगे। उम्मीद है कि यह काम करता है इसलिए मैं आपका जवाब स्वीकार कर सकता हूं। – aligator

संबंधित मुद्दे