C# 使用Win32API移动光标至指定位置并模拟鼠标点击

东西不难。

使用的函数那么几个。

本例是我删除淘宝购物记录时写的,所以是两个坐标点来回移动并点击鼠标左键。

using System;
using System.Runtime.InteropServices;
using System.Threading;

namespace 鼠标移动且点击
{
    public enum MouseType
    {
        //移动鼠标
        MOUSEEVENTF_MOVE = 0x0001,
        //模拟鼠标左键按下
        MOUSEEVENTF_LEFTDOWN = 0x0002,
        //模拟鼠标左键抬起
        MOUSEEVENTF_LEFTUP = 0x0004,
        //模拟鼠标右键按下
        MOUSEEVENTF_RIGHTDOWN = 0x0008,
        //模拟鼠标右键抬起
        MOUSEEVENTF_RIGHTUP = 0x0010,
        //模拟鼠标中键按下
        MOUSEEVENTF_MIDDLEDOWN = 0x0020,
        //模拟鼠标中键抬起
        MOUSEEVENTF_MIDDLEUP = 0x0040,
        //标示是否采用绝对坐标
        MOUSEEVENTF_ABSOLUTE = 0x8000,

    }
    class Program
    {

        [System.Runtime.InteropServices.DllImport("user32")]
        public static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);

        [DllImport("User32.dll")]
        public static extern bool SetCursorPos(int X, int Y);
        static void Main(string[] args)
        {

            Init();
            Console.ReadKey();
        }
        static int x1, y1, x2, y2;
        private static void DoClick()
        {

            SetCursorPos(x1, y1);
             mouse_event((int)MouseType.MOUSEEVENTF_LEFTDOWN | (int)MouseType.MOUSEEVENTF_LEFTUP, 0,0, 0, 0);
            //mouse_event((int)MouseType.MOUSEEVENTF_RIGHTDOWN | (int)MouseType.MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);

            string n = $"x1:{x1},y1:{y1}";
            Console.WriteLine(n);
            Thread.Sleep(300);
        }

        private static void DoClickXY2()
        {
            SetCursorPos(x2, y2);
          //  mouse_event((int)MouseType.MOUSEEVENTF_RIGHTDOWN | (int)MouseType.MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
               mouse_event((int)MouseType.MOUSEEVENTF_LEFTDOWN | (int)MouseType.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

            string n = $"x2:{x2},y2:{y2}";
            Console.WriteLine(n);
            Thread.Sleep(300);
        }

        private static void InputData()
        {
            Console.WriteLine("x1坐标");
            x1 = int.Parse(Console.ReadLine());
            Console.WriteLine("y1坐标");
            y1 = int.Parse(Console.ReadLine());
            Console.WriteLine("x2坐标");
            x2 = int.Parse(Console.ReadLine());
            Console.WriteLine("y2坐标");
            y2 = int.Parse(Console.ReadLine());
            Console.WriteLine();
            string n = $"x1:{x1},y1:{y1},x2:{x2},y2:{y2}";
            Console.WriteLine(n);
        }

        static  void Init()
        {
            while (true)
            {
                pool();
                Console.WriteLine("是否继续? Y/N");
                var b = Console.ReadKey().KeyChar;
                if (b != ‘Y‘ && b != ‘y‘)
                    break;
            }

        }

        static  void pool()
        {
            Console.WriteLine("执行次数:");

            int num = int.Parse(Console.ReadLine());

            InputData();

            while (num >= 0)
            {
                DoClick();
                Thread.Sleep(100);
                DoClickXY2();
                num--;
            }
            Console.WriteLine();
        }
    }
}

原文地址:https://www.cnblogs.com/T-ARF/p/12172997.html

时间: 2024-11-05 19:44:42

C# 使用Win32API移动光标至指定位置并模拟鼠标点击的相关文章

scroll 滚动到指定位置触发事件 and 点击一按钮/链接让页面定位在指定的位置

scroll 滚动到指定位置触发事件:$(function(){ $(window).scroll(function() { var s =$(window).scrollTop(); if (s>=782) {//782是导航条离页面顶部的距离(px) $('.nav').addClass('fixednav'); } else{ $('.nav').removeClass('fixednav'); } });}); .fixednav{ position:fixed; top:0px; le

JQUERY实现点击INPUT使光标移动到最后或指定位置

下面本文章给大家简单介绍一下JQUERY实现点击INPUT使光标移动到最后或指定位置例子,希望对各位有帮助,你要知道面对一个 处女座的 需求者, focus()是远远不够的,比如说“我点进去的时候光标要在最后,这样我就不用再把光标移动到最后去添加东西了.”,oh,让我先撞下墙. 我们需要扩展jQuery,代码如下: //光标放在最后 $("#文本框ID").textFocus();光标放在第二个字符后面 $("#文本框ID").textFocus(2); (func

使用C语言在Win控制台中实现指定位置输出

在古老的Turbo C中有个GotoXY可以让你在指定坐标中输出文字,可恨的是我看过的C语言书籍,有一半都是关于它的.我现在用着Windows系统,不可能还让我去写着DOS程序啊,起码也得从Win控制台程序开始啊.于是搜罗N多资料,终于找到一个Windows控制台程序API可以实现跳转到指定位置中进行输出. #include <stdio.h> #include <Windows.h> #include <conio.h> #include <stdlib.h&g

JS无限添加HTML到指定位置

用JS把HTML添加到指定位置有两种写法,一种是用字符串,一种是用javascript中的方法 第一种: 用字符串写 <h2>利用JS无限添加一个相同部分</h2> <h5>第一种写法</h5> <%--有多少个相同的这里面的值就是几--%> <asp:HiddenField ID="hfCount" runat="server" Value="-1" /> <%--每

点击链接实现定位当前页面指定位置

点击链接实现定位当前页面指定位置:在很多网页都有这样的功能,点击一个链接会实现在当前页面的定位功能,实现此功能非常的简单,但是可能学者或者没有接触的朋友还不不了解,下面就对此做一下简单的介绍. <a href="#jump">蚂蚁部落</a> <p id="jump">只有努力才有美好的明天.</p> 以上代码是进行了压缩,将链接的href属性值设置为#+指定元素的id属性值,就可以使它们建立起 相互关系,这样点击链接

h5上传视频到服务端,存到指定位置,url保存到数据库,最后以特定格式显示

一.视频上传到服务器,存到指定位置. 试过n个方法中,最最靠谱的一个: http://www.cnblogs.com/xdp-gacl/p/4200090.html 二.url保存到数据库 1.项目中新建一个jdbc包 新建类 package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; i

如何跳转到另一个页面的指定位置

如何跳转到另一个页面的指定位置:在同一个页面中,点击一个地方跳转到指定的位置这个很简单,就是使用的锚点,例如: <a href="#thediv">蚂蚁部落</a> 以上代码,当点击a元素的时候能够跳转到id属性值为thediv的元素.上面介绍的是在同一个页面的情况,如果是不同的页面当然也是可以进行这样的定位的,只要在前面加上链接即可: <a href="mytest.aspx#thediv">蚂蚁部落</a> 以上代

删除字符串中指定位置的字符

/********************************************************************** * 版权所有 (C)2015, Wu Yingqiang. * * 文件名称:DelPosChar.c * 文件标识:无 * 内容摘要:删除字符串中指定位置的字符 * 其它说明:无 * 当前版本: V1.0 * 作 者: Wu Yingqiang * 完成日期: 20150115 * ***********************************

Mysql数据库导出压缩并保存到指定位置备份脚本

#!/bin/bashbackdir=/home/shaowei/dbbakdbuser='dbusername'dbpass='dbpasswd'dblist=$(ls -p /var/lib/mysql | grep / | tr -d /)today=$(date +%Y%m%d)mkdir $backdirmkdir $backdir/$todayfor dbname in $dblistdo mysqldump -u$dbuser -p$dbpass $dbname | gzip -v