>

wpf WebBrowser 컨트롤 (System.Windows.Controls)을 사용하고 있으며 사용자가 파일 다운로드 또는 페이지 인쇄와 같은 다양한 작업을 수행하지 못하게해야합니다. Internet Explorer 옵션 (보안 탭->사용자 지정 수준->다운로드->파일 다운로드)에서 파일 다운로드 옵션을 비활성화했습니다. 그 때문에 pdf 링크를 클릭하면 파일 다운로드 팝업 대신 다음과 같은 메시지가 표시된 팝업이 나타납니다. "현재 보안 설정으로이 파일을 다운로드 할 수 없습니다."

이 메시지가 발생하지 않도록하는 방법이 있습니까? 사용자 관점에서 조치를 취하고 싶지 않습니다. IE10을 사용합니다.

  • 답변 # 1

    WPF WebBrowser는 WebBrowser ActiveX 컨트롤을 둘러싼 매우 제한적인 (그러나 확장 불가능하고 봉인 된) 래퍼입니다. 다행히도 기본 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>
    
    

  • 이전 objective c - MKMapView에지도 주석을 추가하는 방법?
  • 다음 out of memory - 많은 경우에도 javalangOutOfMemoryError