C#(CSharp)用CefSharp开发浏览器--鼠标模拟,自动点击,鼠标移动,鼠标事件

本文介绍了如何在C#中利用CefSharp库开发内嵌浏览器并模拟鼠标点击、移动以及自动画线的操作。通过CefSharp的SendMouseClickEvent和SendMouseMoveEvent等函数,避免了使用JavaScript插入代码或Win32 API的复杂方式。文章还提及了一个小坑,即SendMouseWheelEvent中deltaY参数需为负数才能正确实现向下滚动网页。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C# CSharp用CefSharp开发浏览器--鼠标模拟,自动点击,鼠标移动,鼠标事件

效果:模拟鼠标点击、移动,自动画线。

研究 网络爬虫和一些 验证码破解(人类行为检测) 时候,需要 自动 鼠标点击,鼠标移动等。初步找到个满意的方案,写了个案例。

WinForm程序 内嵌浏览器。并在某在线画图网站上,模拟鼠标 点击,移动,画线。

自动画线

开发环境

vs2015 + .Net framework 4.5.2 + x64 + CefSharp 71.0.0( CefSharp.Common 71.0.0 +CefSharp.WinForms 71.0.0)

程序是在CefSharp的开源案例(CefSharp.MinimalExample)上修改而来。
https://github.com/cefsharp/CefSharp.MinimalExample

也可以用 Nuget获得 CefSharp
https://www.nuget.org/packages/CefSharp.WinForms/
https://www.nuget.org/packages/CefSharp.Common/

方案

查了一下午资料。度娘很残念,头几条广告不说,前几页内容还重复,越往后几页更不知道是什么鬼内容。Bing搜索,前几页和 度娘差不多内容。。没有什么好的答案。
基本是:

  • 第一种。向页面 插入JavaScript代码,用JavaScript函数进行操作。
  • 第二种。用Win32 API 模拟发送 windows系统 鼠标事件。

不甚满意。
CefCharp是Chrome的开源浏览器做内核,既然是开源浏览器。不应当用这么别扭的,绕弯的方式实现。
继续研究,查资料。

后来只能翻翻 CarSharp 的源码讨论贴。英文看着挺吃力。还在源码里搜关键字。mouse,click之类。

后来也不记得哪里发现的。总之源码(CefCharp)里有这类函数:
SendMouseClickEvent
SendMouseMoveEvent

后面就是写个案例了。

一个坑

SendMouseWheelEvent 是鼠标滚轮,滚动。

void SendMouseWheelEvent(MouseEvent mouseEvent, int deltaX, int deltaY);

想实现 向下滚动 网页。

deltaY 设置 200 没反应。设500 没反应。设 50 没反应。
检查来 检查去,好几边,没发现哪里有错误。

偶然把页面滚到底部。结果 这货自动滚上去了。滚上去了。上去了。
NMD deltaY 要设 负数。后来一想。鼠标事件里,deltaY这个量 应该是滚轮 滚动量,并不是 页面或者屏幕的坐标量。坐标系不同啊

代码

namespace CefSharp.MinimalExample.WinForms
{
   
   
	//官方的开源案例
    public partial class BrowserForm : Form
    {
   
   
      private readonly ChromiumWebBrowser browser;//CefSharp浏览器
     
        public BrowserForm()
        {
   
   
            InitializeComponent();

            Text = "CefSharp";
            WindowState = FormWindowState.Maximized;

            //在线画板 http://www.atool.org/canvas.php
            browser = new ChromiumWebBrowser("http://ww
WinAPI-Wrapper 模拟鼠标点击 用于模拟鼠标移动点击、窗口操作等的Windows API包装器类。 API 下面是一些可用的方法的总结。有更多的方法和类,比下面列出的要多,但目的是要大致了解包装器能做什么。要查看关于特定方法的详细信息和参数的详细信息,请查看代码本身,因为它的注释很好。 Mouse.cs public static void LeftClick(); public static void RightClick(); public static void MiddleClick(); public static void LeftDown(); public static void LeftUp(); public static void RightDown(); public static void RightUp(); public static void MiddleDown(); public static void MiddleUp(); public static void Move(int x, int y); public static void LeftDrag(Point point1, Point point2, int interval, int lag); Window.cs public static bool DoesExist(string windowTitle); public static IntPtr Get(string windowTitle); public static IntPtr GetFocused(); public static void SetFocused(IntPtr hWnd); public static bool IsFocused(IntPtr hWnd); public static void Move(IntPtr hWnd, int x, int y); public static void Resize(IntPtr hWnd, int width, int height); public static void Hide(IntPtr hWnd); public static void Show(IntPtr hWnd); public static Rectangle GetDimensions(IntPtr hWnd); public static Size GetSize(IntPtr hWnd); public static Point GetLocation(IntPtr hWnd); public static string GetTitle(IntPtr hWnd); public static void SetTitle(IntPtr hWnd, string title); public static void Maximize(IntPtr hWnd); public static void Minimize(IntPtr hWnd); public static void Normalize(IntPtr hWnd); public static Bitmap Screenshot(IntPtr hWnd); public static void RemoveMenu(IntPtr hWnd); public static void Close(IntPtr hWnd); public static void DisableCloseButton(IntPtr hWnd); public static void DisableMaximizeButton(IntPtr hWnd); public static void DisableMinimizeButton(IntPtr hWnd); public static void EnableMouseTransparency(IntPtr hWnd); public static Point ConvertToWindowCoordinates(IntPtr hWnd, int x, int y); public static Point GetCoordinateRelativeToWindow(IntPtr hWnd); Desktop.cs public static Bitmap Screenshot(); public static void HideTaskBar(); public static void ShowTaskBar(); public static int GetWidth(); public static int GetHeight(); 使用 在windows api文件夹中编译代码会产生一个.dll文件。任何引用这个.dll的ccode都可以使用包装器。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值