我在简单的一个主窗口测试应用程序中使用来自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
答案 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的引用。