MATLAB实现控制鼠标移动和点击
来源:互联网 发布:民族知识知多少班会 编辑:程序博客网 时间:2024/06/05 09:47
有了这两个代码,再加上刚刚的matlab截图功能,基本上可以实现一些简单的功能了。
这两个代码可以直接在matlab里面编译。
mousemove.cpp:
#include<windows.h>#include "mex.h"void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){if (nrhs != 2)mexErrMsgTxt("需要两个参数!\m");if (nlhs > 1)mexErrMsgTxt("返回值太多!\m");if (!mxIsDouble(prhs[0]) || !mxIsDouble(prhs[1]))mexErrMsgTxt("输入参数必须为数字!\m");bool flag;int X, Y;X = int(*(double*)(mxGetData(prhs[0])));Y = int(*(double*)(mxGetData(prhs[1])));flag = SetCursorPos(X, Y);double *r;plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);r = mxGetPr(plhs[0]);if (flag)*r = 1;else *r = 0;}
mouseclick.cpp:
#include<windows.h>#include "mex.h"#define CLICK 1#define DOWN 2#define UP 3#define LEFT 1#define MIDDLE 2#define RIGHT 3void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){void errmsg();if (nrhs < 2)mexErrMsgTxt("输入参数太少!\n");if (nrhs > 2)mexErrMsgTxt("输入参数太多!\n");if (nlhs > 0)mexErrMsgTxt("不需要返回值!\n");if (!mxIsDouble(prhs[0]) || !mxIsDouble(prhs[1]))errmsg();double key,mode;key = *(mxGetPr(prhs[0]));mode = *(mxGetPr(prhs[1]));if (key == LEFT){if (mode == CLICK){ //mexPrintf("左键点击\n");mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);}else if (mode == DOWN){ //mexPrintf("左键按下\n");mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);}else if (mode == UP){ //mexPrintf("左键松开\n");mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);}else{errmsg();}}else if (key == MIDDLE){if (mode == CLICK){ //mexPrintf("中键点击\n");mouse_event(MOUSEEVENTF_MIDDLEDOWN,0,0,0,0);mouse_event(MOUSEEVENTF_MIDDLEUP,0,0,0,0);}else if (mode == DOWN){ //mexPrintf("中键按下\n");mouse_event(MOUSEEVENTF_MIDDLEDOWN,0,0,0,0);}else if (mode == UP){ //mexPrintf("中键松开\n");mouse_event(MOUSEEVENTF_MIDDLEUP,0,0,0,0);}else{errmsg();}}else if (key == RIGHT){if (mode == CLICK){ //mexPrintf("右键点击\n");mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);}else if (mode == DOWN){ //mexPrintf("右键按下\n");mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);}else if (mode == UP){ //mexPrintf("右键松开\n");mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);}else{errmsg();}}else{errmsg();}}void errmsg(){//mexPrintf("输入参数不合法。\n");//mexPrintf("第一个参数key:%d表示左键,%d表示中键,%d表示右键。\n",LEFT,MIDDLE,RIGHT);//mexPrintf("第二个参数mode:%d表示点击,%d表示按下,%d表示松开。\n",CLICK,DOWN,UP);mexErrMsgTxt("输入参数不合法!\n");}
0 0
- MATLAB实现控制鼠标移动和点击
- windows下控制鼠标移动和点击的c语言实现
- 鼠标点击控制角色移动
- Unity鼠标控制物体360°旋转和点击移动
- 模拟鼠标点击和移动
- 模拟鼠标移动和点击
- Xlib鼠标移动和点击
- Unity鼠标点击地面控制人物移动
- 利用射线实现鼠标控制角色转向和移动
- opencv 检测鼠标的点击和移动
- Unity中鼠标点击地面控制人物移动
- Unity中鼠标点击地面控制人物移动
- KING_UNITY学习之鼠标点击地面控制人物移动
- Unity学习2 鼠标点击控制物体移动
- Unity3D游戏场景之鼠标点击地面控制人物移动
- Unity实现点击地面控制人物移动
- 鼠标移动/点击事件
- UGUI鼠标点击移动
- MATLAB实现截图功能,返回屏幕截图的RGB数组
- include的简单用法
- word操作常见难关总结
- 5.内置函数和自定义函数
- iOS战记 ----OC基础语法之战(三)
- MATLAB实现控制鼠标移动和点击
- OpenCV自带的adaboost程序训练并检测目标
- hdoj1098a+b(8)
- Linux内部指令及Java编译配置
- 面试题:一个方法和类名相同,那这个是构造方法吗?哪些方式可以获取或设置成员变量的值?
- 题目1011:最大连续子序列 O(n)
- CocoaPods 使用手册
- Android通过Application存储应用全局变量
- Shell学习