2017-03-24 6 views
0

レガシーシステムを統合しており、DLLを呼び出すことによってそのAPIにアクセスする必要があります。現時点では、APIを呼び出す他の方法はありません。WPFの外部DLLからのブラウザの埋め込み404エラーの処理

そして、DLLショーでは、ファイルが見つからないというエラーをスローするスプラッシュ画面を表示しようとしています。

私は、DotPeekがAPIのDLLを逆コンパイルできなかったので、サンプルのソリューションでこの動作を再現することができました。

解決策。

enter image description here

エラーメッセージ。

enter image description here

アプリケーションコード。

public partial class App : Application 
{ 
    protected override void OnStartup(StartupEventArgs e) 
    { 
     base.OnStartup(e); 

     var dll = Assembly.LoadFile(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "WpfLibrary.dll")); 
     var type = dll.GetType("WpfLibrary.TestWindow"); 
     var instance = Activator.CreateInstance(type); 
     object[] parameters = { }; 
     instance.GetType().InvokeMember("Start2", BindingFlags.InvokeMethod, null, instance, parameters); 
    } 
} 

DLLコード。周り

public partial class TestWindow : Window 
{ 
    public TestWindow() 
    { 
     InitializeComponent(); 
    } 

    public void Start2() 
    { 
     Show(); 
     WebBrowser.Navigate(new Uri("file:///C:/aaaa.txt")); 
    } 
} 

簡単な仕事は、しかし、私はよりよい解決策を必要とする、WPFアプリケーションがインストールされるすべてのマシン上のファイルを作成することはできません、不足しているファイルを作成することです。

私の質問は、どうすればこのようなエラーを外部DLLから処理することができますか?エラーメッセージボックスが表示されないようにすれば十分です。

答えて

0

最も簡単な方法は、コードをtry catch節に入れることです。あなたは動作しません。このcodesnippet

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomainUnhandledException); 
+0

を試みることができる

try { var dll = Assembly.LoadFile(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "WpfLibrary.dll")); var type = dll.GetType("WpfLibrary.TestWindow"); var instance = Activator.CreateInstance(type); object[] parameters = { }; instance.GetType().InvokeMember("Start2", BindingFlags.InvokeMethod, null, instance, parameters); } catch(Exception exception) { //handle exception } 

/編集。私の場合、WebBrowserコントロールは例外をスローしません。 – Ignas

+0

Hmmm、ok。そして、ファイルが存在しているかどうかを確認したり、あなたのDLLに例外をスローしたりすることはできません。 –

+0

私はしたいですが、私はそのDLLをまったく制御できません...ちょうどコンパイルされたバイナリを受け取りました... – Ignas

関連する問題