IDocHostUIHandler崩溃MSHTML.dll,错误0xc0000409

时间:2017-08-05 20:07:50

标签: c# wpf windows com mshtml

我在简单的一个主窗口测试应用程序中使用来自https://stackoverflow.com/a/21699086/592212的略微修改的WebBrowser,该窗口中只有WPF public MainWindow() { InitializeComponent(); _wbHostHandler = new WebBrowserHostUIHandler(PART_WebBrowser); _wbHostHandler.Flags |= HostUIFlags.DpiAware; PART_WebBrowser.Navigate("SOME_URL"); } 组件。初始化代码如下:

STATUS_STACK_BUFFER_OVERRUN

应用程序中确实没有其他任何内容。仍然,在运行应用程序后,COM组件中会抛出一个错误(因此,我无法使用调试器来捕获它),并且在事件查看器中报告了0xc0000409( System.out.println("Give your phrase : "); Scanner scan = new Scanner(System.in); String Phrase; Phrase = scan.nextLine(); System.out.println("Enter age : "); int number = scan.nextInt(); // replace the number with empty string mean nothing Phrase = Phrase.replace(String.valueOf(number), ""); Phrase = Phrase.concat(" "); // add space at end for loop calculation int TotalSizeOfPhrase = 0; // set tot =0 int count=0; // a count variable to keep track of the word length for (int i=0; i<Phrase.length(); i++) { count++; if(Character.isWhitespace(Phrase.charAt(i))) { if(count-1>1){ // if size of word ( -1 is there for space size) // is greater than 1 than increment count TotalSizeOfPhrase=TotalSizeOfPhrase+1; } count=0; } } System.out.println(TotalSizeOfPhrase); scan.close();// don't forget )。

关于导致错误的原因或如何摆脱它的任何想法?

(Win10 Pro 1703(build 15063.483)和.NET 4.6.2)

源代码:https://www.dropbox.com/s/ddob6p7jh4dfsda/UIHostCrashDemo.zip?dl=1

1 个答案:

答案 0 :(得分:0)

我不知道你从哪里得到了你的WebBrowserHostUIHandler.cs内容,但它错误IDocHostUIHandler的定义只是错过了TranslateAccelerator方法。

我猜它是因为我的初始代码使用的是System.Windows.Forms.Message类型,它是对System.Windows.Forms(winforms)程序集的引用。如果这是一个问题,如果没有使用该消息(例如我的初始代码中就是这种情况),则可以用这个方法替换该方法。

因此,在界面中,您必须在ResizeBorder之后添加此内容:

[PreserveSig]
uint TranslateAccelerator(IntPtr msg, ref Guid group, int nCmdID);

您必须在代码中的任何位置实现它,如下所示:

uint Native.IDocHostUIHandler.TranslateAccelerator(IntPtr msg, ref Guid group, int nCmdID)
{
    return S_FALSE;
}

但同样,这是可选的,如果你想要的东西只是从我的帖子中仔细复制/粘贴我的代码,并在需要时添加对System.Windows.Forms的引用。