C# CefSharp chromeBrowser Попытка имитировать нажатия клавиш и щелчки мышиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 C# CefSharp chromeBrowser Попытка имитировать нажатия клавиш и щелчки мыши

Сообщение Anonymous »

Я в растерянности после просмотра соответствующих сообщений и документации; похоже, у многих других были подобные проблемы, но ни одно из существующих решений не приводит к тому, что какие-либо нажатия клавиш фактически распознаются браузером.
Весь мой код приведен ниже, это просто пустая форма, пытающаяся ввести имя пользователя и пароль на веб-сайте, на котором в настоящее время нет API, но он появится. Так что это всего лишь исправление, пока их API не будет конкретизирован. В основном просто нужно войти в систему и отправить нажатия клавиш на веб-сайт, но, похоже, ничего не работает.
Я также пробовал: https://ourcodeworld.com/articles/read/520/simulation -Нажмите-правильно-с помощью-inputsimulator-с-csharp-in-winforms

Код: Выделить всё

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;

namespace Hydros_tmp_api
{
public partial class Form1 : Form
{
public ChromiumWebBrowser chromeBrowser;
string CurrentAddress = "";

public void InitializeChromium()
{
CefSettings settings = new CefSettings();
// Initialize cef with the provided settings
Cef.Initialize(settings);
// Create a browser component
chromeBrowser = new ChromiumWebBrowser("https://www.coralvuehydros.com/app/#/status");
// Add it to the form and fill it to the form window.
Controls.Add(chromeBrowser);
chromeBrowser.Dock = DockStyle.Fill;
(chromeBrowser).LoadingStateChanged += Browser_FrameLoadEnd;

chromeBrowser.AddressChanged += Browser_AddressChanged;
}
public Form1()
{
InitializeComponent();
InitializeChromium();
}

private void Form1_Load(object sender, EventArgs e)
{

}
async void Browser_FrameLoadEnd(object sender, LoadingStateChangedEventArgs e)
{ // Jumps in here when the page is fully loaded:
if (e.IsLoading == false)
{
if (CurrentAddress.Contains("login"))
{
timer_login.Enabled = true;
}
}
}

private void Browser_AddressChanged(object sender, AddressChangedEventArgs e)
{
CurrentAddress = e.Address;
}

private void timer_login_Tick(object sender, EventArgs e)
{
timer_login.Enabled = false;
chromeBrowser.GetBrowserHost().SetFocus(true);
Random rnd = new Random();

chromeBrowser.GetBrowser().GetHost().SendKeyEvent(new KeyEvent
{
WindowsKeyCode = (int)Keys.Tab, // Enter
FocusOnEditableField = true,
IsSystemKey = false,
Type = KeyEventType.KeyDown
});

System.Threading.Thread.Sleep(rnd.Next(20, 120));

chromeBrowser.GetBrowser().GetHost().SendKeyEvent(new KeyEvent
{
WindowsKeyCode = (int)Keys.Tab, // Enter
FocusOnEditableField = true,
IsSystemKey = false,
Type = KeyEventType.KeyUp
});

System.Threading.Thread.Sleep(rnd.Next(20, 120));

chromeBrowser.GetBrowser().GetHost().SendKeyEvent(new KeyEvent
{
WindowsKeyCode = (int)Keys.T, // Enter
FocusOnEditableField = true,
IsSystemKey = false,
Type = KeyEventType.KeyDown
});

System.Threading.Thread.Sleep(rnd.Next(20, 120));

chromeBrowser.GetBrowser().GetHost().SendKeyEvent(new KeyEvent
{
WindowsKeyCode = (int)Keys.T, // Enter
FocusOnEditableField = true,
IsSystemKey = false,
Type = KeyEventType.KeyUp
});

System.Threading.Thread.Sleep(rnd.Next(20, 120));

}

}
}
Изменить: кажется, это особая странность с их веб-сайтом, который не принимает имитированный ввод, потому что он отлично работает на других сайтах? Так что не знаю, куда идти дальше.

Подробнее здесь: https://stackoverflow.com/questions/664 ... use-clicks
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»