Я создаю утилиту очистки экрана, чтобы автоматизировать население устаревших веб-форм. После изучения Selenium и других систем автоматизации я решил просто использовать элемент управления C# WebBrower, и пока он прост в использовании и работает хорошо. Однако одна из веб-форм использует навигационную панель, управляемую java, которую я не могу контролировать, как я бы хотел с элементами html. Поэтому мой план состоит в том, чтобы найти координаты экрана различных элементов навигации и имитировать щелчки мыши.Имитация щелчка мыши в управлении веб-браузером
Я нашел несколько релевантных сообщений и попробовал что-то вроде этого (код ниже). Однако это не сработает, и я не могу понять, почему. Я пробовал передавать дескрипторы как для элемента управления WebBrowser, так и для его родительской формы в вызове ClickOn(), но не работает. Я смотрел на него с помощью Spy ++, и кажется, что никакие сообщения не запускаются. Кто-нибудь знает, что может быть виновником?
Кроме того, я должен добавить, что Java еще не задействован. Я просто пытаюсь щелкнуть по кнопке html в этот момент, чтобы проверить метод ClickOn.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(onDocLoaded);
}
private void onLoad(object sender, EventArgs e)
{
browser.Navigate(@"http://www.dummysite.com/");
}
void onDocLoaded(object sender, WebBrowserDocumentCompletedEventArgs e)
{
ClickOn(browser.Handle, 899, 463);
}
[DllImport("user32.dll", EntryPoint = "PostMessage", CharSet = CharSet.Auto)]
static extern bool PostMessage1(IntPtr hWnd, uint Msg,
int wParam, int lParam);
private void ClickOn(IntPtr hControl, int x, int y)
{
uint WM_LBUTTONDOWN = 0x0201;
uint WM_LBUTTONUP = 0x0202;
PostMessage1(hControl, WM_LBUTTONDOWN, x, y);
PostMessage1(hControl, WM_LBUTTONUP, x, y);
}
}