1

I am trying to automatically parse/submit a web page using MSHTML (in C#.Net 3.1 WPF WebBrowser control). I can fill the forms, click buttons, and navigate pages without problems.

But I do not know how to automatically click the "OK" button on the JavaScript confirmation dialog which appears when I click the "Submit" button.

C# code:

mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)webBrowser.Document;
mshtml.IHTMLFormElement form = doc.forms.item("inputForm", 0) as mshtml.IHTMLFormElement;
mshtml.IHTMLElement btnSubmit = form.item("btnFormSubmit", null) as mshtml.IHTMLElement;
btnSubmit.click();

The confirmation dialog ("Are you sure?") appears. I want to somehow send an "Enter" keystroke to the MSHTML document to automatically confirm the submission.

Jason Plank
  • 2,336
  • 5
  • 31
  • 40

2 Answers2

2

I finally found myself the way how to suppress confirmation message in WebBrowser control. It is actually shown in javascript function showConfirm(). I insert dummy function showConfirm() at the top of the header of the Browser.Document which overwrites/suppress the original function showConfirm(). The code is busy, but the main idea is clear, and works perfect.

0

Since the WebBrowser control is a black box, you should probably research getting a handle to the dialog through the Win32 API. From there you can invoke the 'OK' button. Sorry I can't be more specific than that, as I've never done this particular thing before. Hopefully that's enough to get you researching in the right direction, though.

Rex M
  • 142,167
  • 33
  • 283
  • 313
  • Thanks. I am looking for simpler way to click Ok button on confirm dialog using MSHTML and WebBrowser control. I can click anything but this annoying dialog window. I need somehow send "Enter" keystroke to HSHTML doc using Javascript –  Feb 26 '09 at 10:58
  • You can't do that using JavaScript - see this answer: http://stackoverflow.com/questions/563890/is-there-a-way-to-simulate-a-click-on-an-alert-in-javascript/563905#563905 ... confirm works the same way. That's why I suggest the Win32 API. – Rex M Feb 26 '09 at 14:57