2013-05-30 5 views
4

По требованию мне нужно отказаться от содержания на веб-странице. Для реализации этого я создал приложение Windows и добавил элемент управления веб-браузером в основную форму. Чтобы я мог просмотреть процесс утилизации. Я могу войти на веб-страницу и перейти на нужную веб-страницу. Также я могу дважды щелкнуть ячейку сетки программно. Но текущая проблема заключается в том, что я получаю предупреждающее сообщение при программном двойном щелчке по ячейке сетки, и если желаемые данные недоступны enter image description hereПредотвращать оповещение при отказе

Таким образом, процесс естественного разборки прерывается, и вручную мы должны нажать кнопку «ОК», чтобы продолжить процесс очищения. Как я могу избежать появления предупреждающих сообщений при отказе? Любая помощь будет заметна.

+0

возможно дубликат: http://stackoverflow.com/questions/77659/blocking-dialogs-in-net-webbrowser-control – Giedrius

+0

я уже использовал предупреждение overloading.But несчастливо он не работал – Ranish

+0

Так может быть это исходит из какого-то плагина? Или это ошибка javascript, в таком случае вы можете отключить их с помощью 'webBrowser.ScriptErrorsSuppressed = true'. Другой вопрос: действительно ли вам нужен элемент управления веб-браузером для утилизации, поскольку этот подход медленнее, чем выполнение запросов вручную? – Giedrius

ответ

5

Чтобы программно щелкнуть окно предупреждения, мы можем использовать Windows API FindWindow, FindWindowEx и SendMessage, идея заключается в появлении окна предупреждения, форма, в которой размещается элемент управления WebBrowser, потеряет свою концентрацию, в это время мы будем чтобы использовать FindWindow для извлечения дескриптора окна окна предупреждения, мы могли бы отправить сообщение клика на кнопку «ОК», чтобы щелкнуть его.

[DllImport("user32.dll", SetLastError = true)] 
    static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow); 
    [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)] 
    private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 

    [DllImport("user32.dll", CharSet = CharSet.Auto)] 
    static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam); 

    private void Form1_Deactivate(object sender, EventArgs e) 
    { 
     IntPtr hwnd = FindWindow(null, "Message from webpage"); 
     hwnd = FindWindowEx(hwnd, IntPtr.Zero, "Button", "OK"); 
     uint message = 0xf5; 
     SendMessage(hwnd, message, IntPtr.Zero, IntPtr.Zero); 
    } 
Смежные вопросы