sendinput 模拟键盘可以后台模拟鼠标键盘吗

后台按键能设置硬件模拟吗 _ 综合讨论 - 按键精灵论坛
腾讯微博:
软件版本:2014.03软件大小:71.2M更新时间:10-25
软件版本:3.1.7软件大小:52.1M更新时间:12-12
软件版本:1.2.4软件大小:29.2M更新时间:10-28
软件版本:1.1.0软件大小:12.3M更新时间:12-29
查看: 1131|回复: 5
学有所成学有所成勋章,新手步入按键学堂的第一枚勋章论坛GG按键论坛男性用户勋章论坛MM按键论坛女性用户勋章龙年勋章(360天)龙年纪念勋章(360天)按键精灵开发者4级可通过提升认证等级来升级勋章:骨灰级按键用户3年以上的按键论坛用户黄金之翼黄金之翼勋章按键明星按键明星勋章天使勋章天使一样的用户按键图书勋章尊贵的按键图书用户幸运草勋章(永久)商业小精灵限时活动勋章。羊年勋章(360天)羊年纪念勋章(360天)月全勤论坛自然月(如8.1-8.31)签到满勤,系统会在月底自动判断发放。
先说明一下问题来源:网游剑侠情缘网络版叁,前段时间禁止使用了按键精灵,所有通过按键精灵的鼠标键盘操作都失效了,无论前后台。后来发现只要把按键的模拟方式设置成硬件模拟,就能使用前台按键,但是后台依然不能使用。3种模拟方式两种后台插件我都试过,都不行。下面是我试过的代码:Hwnd = Plugin.Window.Find(&KGWin32App&, &剑侠情缘网络版叁&)
//普通模拟
//SetSimMode 0
//硬件模拟
//SetSimMode 1
//超级模拟
//SetSimMode 2
//Bkgnd后台插件
//Call Plugin.Bkgnd.KeyPress(Hwnd, 49)
//Window窗口插件
//Call Plugin.Window.SendKeyPress(Hwnd, 49)
复制代码那么问题来了:我代码里的硬件模拟和超级模拟是只有前台有效吗?如果后台也有硬件模拟该怎么设置?或者需要安装什么插件?
酷玩蚊仔 最后编辑于
这是我个人的一小步,却是节操的一大步。
学有所成学有所成勋章,新手步入按键学堂的第一枚勋章论坛GG按键论坛男性用户勋章论坛MM按键论坛女性用户勋章龙年勋章(360天)龙年纪念勋章(360天)按键精灵开发者4级可通过提升认证等级来升级勋章:骨灰级按键用户3年以上的按键论坛用户黄金之翼黄金之翼勋章按键明星按键明星勋章天使勋章天使一样的用户按键图书勋章尊贵的按键图书用户幸运草勋章(永久)商业小精灵限时活动勋章。羊年勋章(360天)羊年纪念勋章(360天)月全勤论坛自然月(如8.1-8.31)签到满勤,系统会在月底自动判断发放。
听说这是两种完全不同的模拟方式,后台无法支持硬件模拟= =就没有办法了么
这是我个人的一小步,却是节操的一大步。
等着按键精灵更新
h 最后编辑于按键精灵怎么后台按键?按键精灵后台按键制作方法
- 绿茶文章中心
&&&&&&&&&按键精灵怎么后台按键?按键精灵后台按键制作方法
按键精灵怎么后台按键?按键精灵后台按键制作方法
作者:佚名
来源:绿茶软件园
  按键精灵怎么后台按键?大家可以通过下文来了解按键精灵后台按键制作方法,很多朋友希望能够使用按键精灵&找后台&,那么具体步骤是什么呢?请看下文介绍吧,希望对大家有帮助哦~
  1、游戏句柄
  后台的意思就是当窗口被遮盖或移开的时候,仍能够正常的执行脚本动作,所以必须先找到该游戏的窗口句柄,这样可以保证我们编辑的脚本语句有正确的使用方向,获取窗口句柄的方法有很多,我一般使用以下的方法:
  Dim hwnd
  Plugin hwnd=Window.MousePoint()
  Plugin是调用插件命令,凡是调用插件都需要使用这个命令,hwnd就是得到的句柄,Window是插件的名称MousePoint()返回鼠标所在的窗口的句柄
  关于窗口这里需要多说几句,以网页游戏为例,鼠标放在标题栏上和放在游戏窗口所得到的句柄是不一样的,游戏窗口是IE的一个子窗口,因此在运行脚本前,将你的鼠标放在游戏窗口的区域内再运行脚本。
  得到句柄费函数很多,有兴趣的自己去试试看,不过知道一个就足够了。
  2、模拟动作
  得到窗口句柄后,你就可以向这个窗口模拟需要的动作了,在这里要用到按键精灵7的插件(既然已经有7了以前的插件就不作介绍了),模拟动作的函数有如下几个
  -模拟鼠标点击
  Plugin Bkgnd.LeftClick(句柄,横坐标,纵坐标) //模拟鼠标左键点击
  Plugin Bkgnd.RightClick(句柄,横坐标,纵坐标) //模拟鼠标右键点击
  其中的句柄就是上面我们已经得到的句柄,这里的横坐标和纵坐标是针对游戏窗口,而不是针对屏幕的(看晕了吧^_^关于这一点足足困扰了我一个礼拜的时间才弄明白)。
  屏幕坐标,是以屏幕左上角为基点(0,0),右下角的坐标是和屏幕分辨率有关的,而窗口坐标,不是在屏幕的左上角,例如word中的编辑窗口的0,0位置是在工具栏下面的,看不懂也没关系,你只要记住下面的方法就行了,首先在得到窗口句柄后加上如下的代码:
  Plugin s = Window.GetClientRect(hwnd)
  XYArray = Split(s, &|&, -1, 1)
  dx = XYArray(0)
  dy = XYarray(1)
  其次,在横坐标和纵坐标的后面都分别减去dx和dy就行了,为什么!!不用去管他,反正这样做不会错,举例说明
  例如你抓点得到的横坐标是x,纵坐标是y,那么模拟鼠标左键点击的语句应该是这样的:
  Plugin Bkgnd.LeftClick(句柄x-dx,y-dy)
  -模拟键盘动作
  Plugin Bkgnd.KeyPress(句柄,按键码) //模拟键盘动作
  这里的按键码可以很容易的在按键精灵中查到,包括组合键
  -输入字符串
  Plugin Window.SendString(句柄,字符串)
  这个函数在登陆和喊话时是非常有用的,其中的字符串可以是字符串变量
  3、后台找色
  后台脚本尽量少用找色语句,否则你的游戏将&卡巴死机&,即使少用也会出现很多的&马赛克&幸运的是不影响找色功能,即使游戏图像已经乱七八糟,既然是要后台操作,难看就难看吧^_^。
  Plugin c1=BkgndColor.GetPixelColor(hwnd,631-dx,121-dy)
  强烈建议用这个函数,至于什么区域找色,区域照图之类,如果你的电脑速度足够快再去尝试吧。
  找色是有技巧的,一定要找到一个不同画面分别对应不同颜色的点,当然只有一个点是不可靠的。我的思路是,找到几个点的颜色值记录下来,再根据这几个点的不同组合来决定脚本的走向,采取这种方法后,我在游戏时已经基本可以看到大体的画面了。
  附一个网页游戏《明朝时代》61级刷铁矿的简单例子(我就用的这个脚本:)):
  Dim hwnd
  Plugin hwnd=Window.MousePoint()
  Plugin s = Window.GetClientRect(hwnd)
  XYArray = Split(s, &|&, -1, 1)
  dx = XYArray(0)
  dy = XYarray(1)
  vx = 655-dx
  vy = 336-dy
  vx1 = 638-dx
  vy1 = 305-dy
  For 1000
  Delay 156
  Delay 16
  Plugin Bkgnd.LeftClick(hwnd,vx,vy)
  Delay 7000
  Delay 500
  Plugin Bkgnd.LeftClick(hwnd,vx1,vy1)
  Delay 1000
  EndFor
绿茶小编猜你还喜欢:
本类推荐本类排行
热门软件热门标签查看: 535|回复: 7
在别的论坛看到一个APIQQ群|发器 模拟鼠标后台点击 哪位大神可以拆开单独使用后台点击
在线时间 小时
头像被屏蔽
结帖率: (30/94)
在别的论坛看到一个APIQQ群|发器 模拟鼠标后台点击 哪位大神可以拆开单独使用后台点击&&就是我看不懂他这是什么原理 源码奉上 哪位大神可以帮我改下成一个按钮 569,497 这是坐标 我点下按钮他回后台点击这个坐标啊
21:44 上传
点击文件名下载附件
6.83 KB, 下载次数: 59
回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至
可获得加分喔。友情提醒:本版被采纳的主题可在
帖子申请荣誉值,获得 1点 荣誉值,荣誉值可兑换终身vip用户组哦。快捷通道: →
在线时间 小时
头像被屏蔽
结帖率: (30/94)
在线等大神啦
您可以选择打赏方式支持他
阅读权限10
在线时间 小时
看看是什么
您可以选择打赏方式支持他
阅读权限165
在线时间 小时
签到天数: 6 天结帖率: (4/4)
精易模块的键盘_消息就是API后台点击
您可以选择打赏方式支持他
阅读权限89
在线时间 小时
签到天数: 5 天
您可以选择打赏方式支持他
在线时间 小时
头像被屏蔽
结帖率: (30/94)
精易模块的键盘_消息就是API后台点击
我试过 不行啊 大神
您可以选择打赏方式支持他
阅读权限30
在线时间 小时
签到天数: 3 天
CxSend_AddText,CxSend_ApiEnter,CxSend_ApiCTRLEnter。CatchQQWindow类(集)中的这三个方法名hwnd后面的坐标中可能有你要改的位置。
您可以选择打赏方式支持他
在线时间 小时
头像被屏蔽
结帖率: (30/94)
CxSend_AddText,CxSend_ApiEnter,CxSend_ApiCTRLEnter。CatchQQWindow类(集)中的这三个方法名hwnd后面的 ...
不知道怎么改啊
您可以选择打赏方式支持他
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
揭阳精易科技有限公司申明:我公司所有的培训课程版权归精易所有,任何人以任何方式翻录、盗版、破解本站培训课程,我们必将通过法律途径解决!
公司简介:揭阳市揭东区精易科技有限公司致力于易语言教学培训/易语言学习交流社区的建设与软件开发,多年来为中小企业编写过许许多多各式软件,并把多年积累的开发经验逐步录制成视频课程供学员学习,让学员全面系统化学习易语言编程,少走弯路,减少对相关技术的研究与摸索时间,从而加快了学习进度!
防范网络诈骗,远离网络犯罪
违法和不良信息举报电话,企业QQ: ,邮箱:@
Powered by
粤公网安备 25封装常见的模拟鼠标、键盘的操作函数-c/c++-电脑编程网封装常见的模拟鼠标、键盘的操作函数作者:佚名 和相关&&//////////////////////mouse.h//模拟鼠标的常见操作////////////////////#pragma once#include &windows.h&class MOUSE{private:&&& //坐标变量&&& POINTpublic:&&& //移动类函数&&& void&&& Move(int x,int y);&&& void&&& RelativeMove(int cx,int cy);&&& void&&& SavePos();&&& void&&& RestorePos();&&& //锁定启用类&&& void&&& Lock();&&& void&&& Unlock();&&& //动作类&&& void&&& LBClick();&&& void&&& LBDbClick();&&& void&&& LBDown();&&& void&&& LBUp();&&& void&&& RBClick();&&& void&&& RBDbClick();&&& void&&& RBDown();&&& void&&& RBUp();&&& void&&& MBClick();&&& void&&& MBDbClick();&&& void&&& MBDown();&&& void&&& MBUp();&&& void&&& MBRoll(int ch);};//移动鼠标到绝对位置(X坐标,Y坐标)void MOUSE::Move(int x,int y){&&& this-&point.x=x;&&& this-&point.y=y;&&& ::SetCursorPos(x,y);}//移动鼠标到相对位置(X位移,Y位移)void MOUSE::RelativeMove(int cx,int cy){&&& ::GetCursorPos(&this-&point);&&& this-&point.x+=&&& this-&point.y+=&&& ::SetCursorPos(this-&point.x,this-&point.y);}//保存当前位置()void MOUSE::SavePos(){&&& ::GetCursorPos(&this-&point);}//恢复鼠标位置()void MOUSE::RestorePos(){&&& ::SetCursorPos(this-&point.x,this-&point.y);}//锁定鼠标()void MOUSE::Lock(){&&& POINT&&&&&& RECT&&&&&& ::GetCursorPos(&pt);&&& rt.left=rt.right=pt.x;&&& rt.top=rt.bottom=pt.y;&&& rt.right++;&&& rt.bottom++;&&& ::ClipCursor(&rt);}//解锁鼠标()void MOUSE::Unlock(){&&& ::ClipCursor(NULL);}//左键单击()void MOUSE::LBClick(){&&& this-&SavePos();&&& ::mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP,this-&point.x,this-&point.y,0,0);}//左键双击()void MOUSE::LBDbClick(){&&& this-&SavePos();&&& ::mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP,this-&point.x,this-&point.y,0,0);&&& ::mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP,this-&point.x,this-&point.y,0,0);}//左键按下()void MOUSE::LBDown(){&&& this-&SavePos();&&& ::mouse_event(MOUSEEVENTF_LEFTDOWN,this-&point.x,this-&point.y,0,0);}//左键抬起()void MOUSE::LBUp(){&&& this-&SavePos();&&& ::mouse_event(MOUSEEVENTF_LEFTUP,this-&point.x,this-&point.y,0,0);}//右键单击()void MOUSE::RBClick(){&&& this-&SavePos();&&& ::mouse_event(MOUSEEVENTF_RIGHTDOWN|MOUSEEVENTF_RIGHTUP,this-&point.x,this-&point.y,0,0);}//右键双击()void MOUSE::RBDbClick(){&&& this-&SavePos();&&& ::mouse_event(MOUSEEVENTF_RIGHTDOWN|MOUSEEVENTF_RIGHTUP,this-&point.x,this-&point.y,0,0);&&& ::mouse_event(MOUSEEVENTF_RIGHTDOWN|MOUSEEVENTF_RIGHTUP,this-&point.x,this-&point.y,0,0);}//右键按下()void MOUSE::RBDown(){&&& this-&SavePos();&&& ::mouse_event(MOUSEEVENTF_RIGHTDOWN,this-&point.x,this-&point.y,0,0);}//右键抬起()void MOUSE::RBUp(){&&& this-&SavePos();&&& ::mouse_event(MOUSEEVENTF_RIGHTUP,this-&point.x,this-&point.y,0,0);}//中键单击()void MOUSE::MBClick(){&&& this-&SavePos();&&& ::mouse_event(MOUSEEVENTF_MIDDLEDOWN|MOUSEEVENTF_MIDDLEUP,this-&point.x,this-&point.y,0,0);}//中键双击()void MOUSE::MBDbClick(){&&& this-&SavePos();&&& ::mouse_event(MOUSEEVENTF_MIDDLEDOWN|MOUSEEVENTF_MIDDLEUP,this-&point.x,this-&point.y,0,0);&&& ::mouse_event(MOUSEEVENTF_MIDDLEDOWN|MOUSEEVENTF_MIDDLEUP,this-&point.x,this-&point.y,0,0);}//中键按下()void MOUSE::MBDown(){&&& this-&SavePos();&&& ::mouse_event(MOUSEEVENTF_MIDDLEDOWN,this-&point.x,this-&point.y,0,0);}//中键抬起()void MOUSE::MBUp(){&&& this-&SavePos();&&& ::mouse_event(MOUSEEVENTF_MIDDLEUP,this-&point.x,this-&point.y,0,0);}//中键滚动(滚动位移)void MOUSE::MBRoll(int ch){&&& this-&SavePos();&&& ::mouse_event(MOUSEEVENTF_WHEEL,this-&point.x,this-&point.y,ch,0);}///////////////////////////keyboard.h//模拟键盘的常见操作/////////////////////////#pragma once#include &windows.h&class KEYBOARD{public:&&& void&&& PressStr(char *str);&&& void&&& PressKey(BYTE bVk);&&& void&&& KeyDown(BYTE bVk);&&& void&&& KeyUp(BYTE bVk);};//按键(虚拟键值)void KEYBOARD::PressKey(BYTE bVk){&&& ::keybd_event(bVk,0,0,0);&&& ::keybd_event(bVk,0,KEYEVENTF_KEYUP,0);}//按下(虚拟键值)void KEYBOARD::KeyDown(BYTE bVk){&&& ::keybd_event(bVk,0,0,0);}//抬起(虚拟键值)void KEYBOARD::KeyUp(BYTE bVk){&&& ::keybd_event(bVk,0,KEYEVENTF_KEYUP,0);}//发送字符串(字符串)void KEYBOARD::PressStr(char *str){&&& for (unsigned i=0;i&strlen(str);i++)&&& {&&&&&&& if (str[i]&0x60 && str[i]&0x7B)&&&&&&&&&&& this-&PressKey(str[i]-0x20);&&&&&&& else&&&&&&&&&&& this-&PressKey(str[i]);&&& }}BOOL&SetCursorPos(
  &int&X,&//&horizontal&position
  &int&Y&//&vertical&position
  设置鼠标位置。鼠标指针在屏幕像素坐标系统中的X,Y位置
  这个函数是用来设置Mouse位置的。可以用这个函数来移动mouse在屏幕上的移动。
  另外一个函数功能比较强,即mouse_event()
VOID&mouse_event(
  &DWORD&dwFlags,&
  &DWORD&dx,&
  &DWORD&dy,&
  &DWORD&dwData,&
  &DWORD&dwExtraInfo
  );  
  设置mouse状态。参数说明如下:
  dwFlags&Long,下述标志的一个组合&:
  MOUSEEVENTF_ABSOLUTE&dx和dy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成6个单元&
  MOUSEEVENTF_MOVE&移动鼠标&
  MOUSEEVENTF_LEFTDOWN&模拟鼠标左键按下&
  MOUSEEVENTF_LEFTUP&模拟鼠标左键抬起&
  MOUSEEVENTF_RIGHTDOWN&模拟鼠标右键按下&
  MOUSEEVENTF_RIGHTUP&模拟鼠标右键按下&
  MOUSEEVENTF_MIDDLEDOWN&模拟鼠标中键按下&
  MOUSEEVENTF_MIDDLEUP&模拟鼠标中键按下&
  dx&根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定水平方向的绝对位置或相对运动&
  dy&根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定垂直方向的绝对位置或相对运动&
  dwData amount&of&wheel&movement
  dwExtraInfo,通常未用的一个值。用GetMessageExtraInfo函数可取得这个值。可用的值取决于特定的驱动程序。
  例如:将mouse移动到坐标(450,100)&可用函数:
  SetCursorPos(450,100)&;&或
  mouse_event(MOUSEEVENTF_MOVE&,0,450,100,GetMessageExtraInfo());&来实现
  实现鼠标单击:
  mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,GetMessageExtraInfo());
  mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,GetMessageExtraInfo&());
  那么,如何模拟mouse不断的移动和点击呢?这需要用定时器完成。
  以C为例:
  在初始化程序的时候,设置时钟:
case&WM_CREATE:
  SetTimer(1,&1000,&NULL);
  这样就设置了ID号为1&的时钟事件,&它每秒(1000毫秒)将产生一个&WM_TIMER事件。
  然后我们在WM_TIMER事件中将入相关的处理:
case&WM_TIMER:
  //&mouse&move&code...
  //&mouse&click&code...
}相关资料:|||||||封装常见的模拟鼠标、键盘的操作函数来源网络,如有侵权请告知,即处理!编程Tags:                &                    }

我要回帖

更多关于 sendinput 鼠标 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信