2012-04-05 9 views
1

こんにちは、私はWPFで素晴らしいHTMLエディタが欲しいです。だから、私がやったことは、WebブラウザーをWPFウィンドウに追加して、その中のTinyMCE htmlエディターを使ってhtmlページに移動したことです。しかし、私がアプリケーションを実行すると、ブラウザのコントロールにスクリプトの警告が表示されます(http://social.msdn.microsoft.com/Forums/en/wpf/thread/cbc3eae6-dbc4-4074-befc-902d990fbaaeのこのMSDNスレッドを参照してください)WPF WebBrowserのスクリプト警告

私は、Simon MourierがStackOverflowに投稿したCOMコードを試しました。http://stackoverflow.com /質問/ 6138199/WPF-ウェブブラウザ-制御方法ツーを抑圧スクリプト・エラー)

今私のコードは次のようになります。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 
using System.Runtime.InteropServices; 
using System.Reflection; 

namespace TinyMceWpf 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
      webBrowser1.Navigated += new NavigatedEventHandler(webBrowser1_Navigated); 
      webBrowser1.Navigate(new 
Uri(@"C:\Users\MAHESH\Desktop\TechNode\WPF\MytTechDos\TinyMceWpf\TinyMceWpf\TinyMceWpf\edit.html")); 
     } 


     private void btnGetHtml_Click(object sender, RoutedEventArgs e) 
     { 
      string editHtml = this.webBrowser1.InvokeScript("getContent").ToString(); 
      MessageBox.Show(editHtml); 
     } 

    public static void SetSilent(WebBrowser browser, bool silent) 
    { 
     if (browser == null) 
      throw new ArgumentNullException("browser"); 

     // get an IWebBrowser2 from the document 
     IOleServiceProvider sp = browser.Document as IOleServiceProvider; 
     if (sp != null) 
     { 
      Guid IID_IWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046"); 
      Guid IID_IWebBrowser2 = new Guid("D30C1661-CDAF-11d0-8A3E-00C04FC9E26E"); 

      object webBrowser; 
      sp.QueryService(ref IID_IWebBrowserApp, ref IID_IWebBrowser2, out webBrowser); 
      if (webBrowser != null) 
      { 
       webBrowser.GetType().InvokeMember("Silent", BindingFlags.Instance | BindingFlags.Public | BindingFlags.PutDispProperty, null, webBrowser, new object[] { silent }); 
      } 
     } 
    } 


    [ComImport, Guid("6D5140C1-7436-11CE-8034-00AA006009FA"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 
    private interface IOleServiceProvider 
    { 
     [PreserveSig] 
     int QueryService([In] ref Guid guidService, [In] ref Guid riid, [MarshalAs(UnmanagedType.IDispatch)] out object ppvObject); 
    } 

    private void webBrowser1_Navigated(object sender, NavigationEventArgs e) 
    { 
     SetSilent(webBrowser1, true); 
    } 
} 
} 

しかし、それはまだ今まで働いていません。私は何をすべきか?助けてください。

+0

スクリプトを有効にすると、エラーが消えてしまいます。特に問題は何ですか? – Paparazzi

+0

はいスクリプトを有効にすると、エラーが消えてしまいました。しかし、私は、私はアプリを実行し、Webブラウザコントロールは、tinyMceを含むHTMLページに移動されたときにすべてのスクリプトエラーが来るしたくない。申し訳ありませんが、 –

+0

実際に私はすぐに応答を行って、それを実装して実験します。だから私は答えとしてマークすることを忘れていたと感じます。しかし、私は真剣に私は答えとしてそれらのどれもマークしていないのか困惑しています。私の間違い。私は今それらをマークした。これを指摘していただきありがとうございます。 –

答えて

3

このコードをSetSilentメソッドで使用します。

FieldInfo webBrowserInfo = browser.GetType().GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic); 
object comWebBrowser = null; 

if (webBrowserInfo != null) 
    comWebBrowser = webBrowserInfo.GetValue(browser); 

if (comWebBrowser != null) 
    comWebBrowser.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, comWebBrowser, new object[] { silent }); 
+0

最後の行の 'silent'オブジェクトは何ですか? –

関連する問題