幽灵键鼠常用方法调用

一、幽灵键鼠:

1.概述

幽灵键鼠是一款硬件键鼠,通过编写脚本指令而模拟人工操作的一款硬件

幽灵键鼠分为两个型号KM系列和SR系列,两大系列的不同在与KM系列是只能在前台运行,而SR系列是KM系列的升级版,是可以把纯键盘鼠标按键放入硬件里的,下面我开始介绍两者是如何使用的。

  1. KM系列简介

    Km系列现在主打的产品是KM03.04它低廉的价格和优异的性能也得到了大家的信赖。

    Km系列

    我们提供COM和DLL两种形式的SDK,支持32位和64位开发、运行环境,可供所有主流开发工具调用。

    我们提供按键精灵、易语言、TC、C#、Python、VB、VC、Delphi等常开发工具调用SDK的同时我们也提供DEMO程序

    提供专用的 [幽灵键鼠集成开发环境 kmlIDE],支持脚本编写、运行、编译,供用户免费使用。(注:因涉及复杂运算km系列是有进程的)

  2. SR系列

    SR系列有两种模式可以使用

    直接使用SRIDE编辑器(注:纯键盘鼠标按键可直接写入硬件无进程),KMLIDE模式(涉及找图找色等复杂运算,有进程)

  3. KM系列和SR系列是如何使用的。

    首先把购买的硬件插入电脑的USB接口

    插入之后,硬件会亮起绿灯这说明它现在是正常的,而硬件插入之后在我的电脑是不显示U盘形式(注:我们的产品是一款无实体按键的键盘鼠标,所以,在我的电脑里不是U盘形式出现的),需要打开任务管理器才能看到,右键单击我的电脑,或者我的计算机打开设备管理找到键盘和鼠标选项。

    插入前看到,现在键盘和鼠标里只会出现一套鼠标键盘。

    插入后产品已经默认为另外一套键盘鼠标了,现在大家都可以开始操作了。SR系列和KM系列的插入方式是一样的,这里目前是我电脑使用的幽灵键鼠版本。

    在这里插入图片描述

2.幽灵键鼠硬件检测

①硬件检测程序

  1. 打开如下程序,能够识别插入后的幽灵键鼠的【产品信息】,【硬件信息】,【支持的功能】

在这里插入图片描述

  1. 我这边购买的幽灵键鼠只支持【键盘,鼠标】,这两个算是最常用的功能点了。其他的根据自身业务功能情况去购买时找商家了解清楚即可。

3.幽灵键鼠开发文档

①幽灵键鼠支持如下技术,需要能访问COM组件

在这里插入图片描述

②功能特点

在这里插入图片描述

③开发接口

  1. 设备函数

  2. 时钟函数

  3. 加密锁函数

  4. 键盘函数

  5. 鼠标函数

  6. KM21专用函数

  7. 辅助函数

在这里插入图片描述

二、自定义-幽灵键鼠

1. C#封装的exe程序

①使用cmd或者Powershell调用封装程序

  1. 调用模拟按键输入,输入一个方法名和一个参数,如果提示如下异常内容,表示当前运行设备(电脑)未和幽灵键鼠硬件连接,建议使用检测工具检测是否连接

在这里插入图片描述

  1. 如果设备已连接,再次执行刚才的命令

    在这里插入图片描述

  2. 如果调用的方法要传入多个参数,用英文逗号隔开

在这里插入图片描述

  1. 调用参数描述说明

    封装程序.exe的绝对路径 方法名 输入参数(单个或多个;多个用,隔开)

在这里插入图片描述

②模拟按键输入

/*
 * 模拟按键输入(只支持英文,数字,特殊符号,自动识别大小写)
 * 传入参数类型:字符串(String):待模拟人工输入的字符串
 * 返回结果类型:整型数
 *       大于0:成功,返回输入的字符串字节数,例如1代表2个字节,即是返回2
 *       0:失败
 */
public static extern int SimulationPressKey(String Keys);

③模拟人工鼠标移动

/* 模拟鼠标移动(单纯移动鼠标,不对鼠标的按键进行操作)
 * 传入参数类型:1.数字整型(int):X:整型数,屏幕的水平坐标   2.数字整型(int):Y:整型数,屏幕的垂直坐标
 * 返回结果类型:布尔值(Boolean)
 *      整型数:大于0:成功  ;0:失败
 */
public static extern int Simulation_Move(int X,int Y);

③模拟滑动鼠标移动

 /* 模拟鼠标移动(左键按下后移动,适用于滑动验证码处理)
  * 传入参数类型:1.数字整型(int):X:整型数,屏幕的水平坐标   2.数字整型(int):Y:整型数,屏幕的垂直坐标
  * 返回结果类型:布尔值(Boolean)
  *      整型数:大于0:成功  ;0:失败
 */
public static extern int Move_To(int X,int Y);

④ 鼠标滚轮滚动

/* 鼠标滚轮滚动
 * 传入参数类型:数字整型(int):Count 滚动次数:Count:整型数,移动次数,范围-127至127,正数向上移动,负数向下移动
  * 返回结果类型: 整型数->1:成功 ; 0:失败
 */
public static extern int Wheels_Move(int Count)

⑤单键按下

 /*  
 *  单键按下
 *  键盘单个键按下,键码表请参考USB键盘
 *  传入参数类型:字符串,按下的键名
 *  返回结果类型:整型数
 *       1:成功
         0:失败
*/
public static extern int KeyDown(String Key);

⑥单击弹起

/*  
 *  单键弹起
 *  键盘键弹起,键码表请参考USB键盘
 *  传入参数类型:字符串,弹起的键名
 *  返回结果类型:整型数
 *       1:成功
         0:失败
*/
public static extern int KeyUp(String Key);

⑦所有键弹起

 /* 所有键盘按键弹起,在复杂的代码中容易忘记哪些键已经按下,该函数可将所有按键都弹起
  * 传入参数类型:无
  * 返回结果类型:整型数; 1:成功; 0:失败
 */
public static extern int KeyUpAll();

⑧获取键盘大写灯状态

/* 获取键盘大定灯状态
 * 无需输入参数
 * 返回结果类型:整型数
 *     1:CapsLock灯熄灭
 *     2:CapsLock灯亮
 *     0:失败
*/
public static extern int GetCapsLock();

⑨鼠标左键按下

/*  
 *  鼠标左键按下
 *  传入参数类型:无
 *  返回结果类型:整型数
 *      1:成功
 *      0:失败
*/
public static extern int LeftDown();

⑩鼠标左键弹起

/*  
 *  鼠标左键弹起
 *  传入参数类型:无
 *  返回结果类型:整型数
 *      1:成功
 *      0:失败
*/
public static extern int LeftUp();

2.注意

①需要把COM组件程序集(kmllib.dll)存放到C盘根目录下能调用封装exe程序

在这里插入图片描述

三、幽灵键鼠资源下载

1.工具资源网盘下载:

工具资源网盘下载
提取码: mty9

因为有人提到是否能够提供源码,非常抱歉之前忙于其他的疏忽了,代码如下;C#语言编写,仅供参考哈。感谢大家支持。
想扩展功能参考网盘链接的开发文档哈。
在这里插入图片描述

using System;
using System.Reflection;
using System.Runtime.InteropServices;

namespace InvokeMouceKey
{
    public class MouseEventFlag
    {
        /*
            初始化设备
         *  打开设备,有多个设备时默认打开第一个。使用我们的脚本开发工具时不需调用该接口,kmlIDE会自动管理设备连接。
         *  传入参数类型:无
         *  返回结果类型:整型数
         *      1:成功
         *      0:失败
         */
        [DllImport("C:\\kmllib.dll", CharSet = CharSet.Auto)]
        public static extern bool OpenDevice();

        /*
            关闭设备
         *  检查设备是否连接,设备拔出后再次插入会自动连接
         *  传入参数类型:无
         *  返回结果类型:整型数
         *      1:连接
         *      0:未连接
         */
        [DllImport("C:\\kmllib.dll", CharSet = CharSet.Auto)]
        public static extern bool CloseDevice();

        /*
         * 模拟按键输入(只支持英文,特殊符号,自动识别大小写)
         * 传入参数类型:字符串(String):待模拟人工输入的字符串
         * 返回结果类型:整型数
         *      大于0:成功,返回输入的字符串字节数,例如1代表2个字节,即是返回2
         *      0:失败
         */
        [DllImport("C:\\kmllib.dll")]
        public static extern int SimulationPressKey(String Keys);

        /*
         模拟人工鼠标移动
         */
        [DllImport("C:\\kmllib.dll", CharSet = CharSet.Auto)]
        public static extern int SimulationMove(int X, int Y);

        /* 获取键盘大定灯状态
         * 无需输入参数
         * 返回结果类型:整型数
         *      1:CapsLock灯熄灭
         *      2:CapsLock灯亮
         *      0:失败
        */
        [DllImport("C:\\kmllib.dll", CharSet = CharSet.Auto)]
        public static extern int GetCapsLock();

        /*
            鼠标滚轮滚动
         */
        [DllImport("C:\\kmllib.dll", CharSet = CharSet.Auto)]
        public static extern int WheelsMove(int Count);

        /* 检查设备是否连接,设备拔出后再次插入会自动连接
         * 传入参数类型:无
         * 返回结果类型: 整数型:1:连接; 不为1:未连接
         */
        [DllImport("C:\\kmllib.dll", CharSet = CharSet.Auto)]
        public static extern int CheckDevice();

        /*
             一次组合按键
         */
        [DllImport("C:\\kmllib.dll", CharSet = CharSet.Auto)]
        public static extern int CombinationKeyPress(String key1, String key2, String key3, String key4, String key5, String key6,int count);

        /* 所有键盘按键弹起,在复杂的代码中容易忘记哪些键已经按下,该函数可将所有按键都弹起
         * 传入参数类型:无
         * 返回结果类型:整型数; 1:成功; 0:失败
        */
        [DllImport("C:\\kmllib.dll", CharSet = CharSet.Auto)]
        public static extern int KeyUpAll();

        /* 
         * 组合键按下
        */
        [DllImport("C:\\kmllib.dll", CharSet = CharSet.Auto)]
        public static extern int CombinationKeyDown(String key1, String key2, String key3, String key4, String key5, String key6);

        /* 
         * 组合键弹起
        */
        [DllImport("C:\\kmllib.dll", CharSet = CharSet.Auto)]
        public static extern int CombinationKeyUp(String key1, String key2, String key3, String key4, String key5, String key6);

        /*  
         *  鼠标左键按下
         *  传入参数类型:无
         *  返回结果类型:整型数
         *      1:成功
         *      0:失败
        */
        [DllImport("C:\\kmllib.dll", CharSet = CharSet.Auto)]
        public static extern int LeftDown();

        /*  
         *  鼠标左键弹起
         *  传入参数类型:无
         *  返回结果类型:整型数
         *      1:成功
         *      0:失败
        */
        [DllImport("C:\\kmllib.dll", CharSet = CharSet.Auto)]
        public static extern int LeftUp();

        /*  
         *  单键按下
         *  键盘单个键按下,键码表请参考USB键盘
         *  传入参数类型:字符串,按下的键名
         *  返回结果类型:整型数
         *       1:成功
                 0:失败
        */
        [DllImport("C:\\kmllib.dll", CharSet = CharSet.Auto)]
        public static extern int KeyDown(String Key);

        /*  
         *  鼠标左键单击
         *  键盘键弹起,键码表请参考USB键盘
         *  传入参数类型:字符串,弹起的键名
         *  返回结果类型:整型数
         *       1:成功
                 0:失败
        */
        [DllImport("C:\\kmllib.dll", CharSet = CharSet.Auto)]
        public static extern int KeyUp(String Key);

        /*  
         *  单键弹起
         *  传入参数类型:Count:整型数,单击次数
         *  返回结果类型:整型数
         *       大于0:成功
                 0:失败
        */
        [DllImport("C:\\kmllib.dll", CharSet = CharSet.Auto)]
        public static extern int LeftClick(int Count);


        //自定义方法入口
        /* 鼠标滚轮滚动
         * 传入参数类型:数字整型(int):Count 滚动次数:Count:整型数,移动次数,范围-127至127,正数向上移动,负数向下移动
         * 返回结果类型: 整型数->1:成功 ; 0:失败
        */
        public static int Wheels_Move(String Keys)
        {
            //滚动次数
            int Count = Convert.ToInt32(Keys);
            return WheelsMove(Count);
        }

        /* 模拟鼠标移动(单纯移动鼠标,不对鼠标的按键进行操作)
         * 传入参数类型:1.数字整型(int):X:整型数,屏幕的水平坐标   2.数字整型(int):Y:整型数,屏幕的垂直坐标
         * 返回结果类型:布尔值(Boolean)
         *      整型数:大于0:成功  ;0:失败
        */
        public static int Simulation_Move(String Keys)
        {
            //横坐标
            int X = Convert.ToInt32(Keys.Split(',')[0]);
            //纵坐标
            int Y = Convert.ToInt32(Keys.Split(',')[1]);
            return SimulationMove(X, Y);
        }

        /* 模拟鼠标移动(左键按下后移动,适用于滑动验证码处理)
         * 传入参数类型:1.数字整型(int):X:整型数,屏幕的水平坐标   2.数字整型(int):Y:整型数,屏幕的垂直坐标
         * 返回结果类型:布尔值(Boolean)
         *      整型数:大于0:成功  ;0:失败
        */
        public static int Move_To(String Keys)
        {
            //鼠标左键按下
            LeftDown();
            //横坐标
            int X = Convert.ToInt32(Keys.Split(',')[0]);
            //纵坐标
            int Y = Convert.ToInt32(Keys.Split(',')[1]);
            //移动鼠标
            int i =SimulationMove(X, Y);
            //鼠标左键松开
            LeftUp();
            return i;
        }

        /*  一次组合按键
        * 传入参数类型:整型数,字符串,按下的字符键名1;字符串,按下的字符键名2
        * 返回结果类型:整型数; 1:成功; 0:失败
        *
       */
        public static int CombinationKey_Press(String Keys)
        {
            var status = CombinationKeyPress(Keys.Split(',')[1], "", "", Keys.Split(',')[0], "", "",1);
            return status;
        }

        /* 键盘组合键按下
        * 传入参数类型:整型数,字符串,按下的字符键名1;字符串,按下的字符键名2
        * 返回结果类型:整型数; 1:成功; 0:失败
        *
       */
        public static int CombinationKey_Down(String Keys)
        {
            var status = CombinationKeyDown(Keys.Split(',')[1],"", "", Keys.Split(',')[0], "", "");
            KeyUpAll();
            return status;
        }

        /* 键盘组合键弹起
        * 传入参数类型:整型数,字符串,按下的字符键名1;字符串,按下的字符键名2
        * 返回结果类型:整型数; 1:成功; 0:失败
        *
       */
        public static int CombinationKey_Up(String Keys)
        {
            return CombinationKeyUp(Keys.Split(',')[0], Keys.Split(',')[1], "", "", "", "");
        }

        /**
         *  MoveClickMouseAndInputKey  方法名
         *  特殊情况ukey:内置【模拟人工移动鼠标】+【鼠标点击】+【模拟按键输入】
         *  [Simulation_Move(keys)]+[LeftClick(1)]+SimulationPressKey(keys)
         *  参数输入介绍: x坐标,y坐标,要输入的字符串内容
         *                 100,200,验证ukey密码框输入
         */
        public static int MoveClickMouseAndInputKey(String Keys) {
            //模拟人工移动鼠标
            //横坐标
            int X = Convert.ToInt32(Keys.Split(',')[0]);
            //纵坐标
            int Y = Convert.ToInt32(Keys.Split(',')[1]);
            SimulationMove(X, Y);
            //鼠标点击
            LeftClick(1);
            //模拟输入
            return SimulationPressKey(Keys.Split(',')[2]);
        }
        //主方法入口 
        static void Main(String[] args)
        {
            try
            {
                Type t = typeof(MouseEventFlag);//参数为所要使用的函数所在的类的类名。
                MethodInfo mt = t.GetMethod(args[0]);
                Object successfulObj = false;
                if (CheckDevice() == 1)
                {
                    Console.WriteLine("幽灵键鼠设备已连接!");
                }
                else if (OpenDevice() != true)
                {
                    throw new Exception("设备未连接,请插入符合要求的幽灵键鼠硬件!!");
                }
                if (mt == null)
                {
                    throw new Exception($"没有获取到相应的【{args[0]}】函数!!");
                }
                else
                {
                    if (args.Length >1)
                    {
                        String Keys = "";
                        for (int i = 1; i < args.Length; i++)
                        {
                            if (i == 1)
                            {
                                Keys +=args[i];
                            }
                            else {
                                Keys += " " + args[i];
                            }
                            
                        }
                        successfulObj = mt.Invoke(null, new object[] { Keys });
                    }
                    else
                    {
                        successfulObj = mt.Invoke(null, null);
                    }
                }
                Console.WriteLine(successfulObj.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine($"异常内容为:{e.Message}{e.InnerException}{e.StackTrace};时间为:{DateTime.Now}\n");
            }
        }
    }
}
  • 21
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值