51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

查看: 218|回复: 9
收起左侧

[待解决] send_mouse_down_event,send_mouse_up_event等如何使用?

[复制链接]
  • TA的每日心情
    耍酷
    2019-7-9 08:36
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    1

    主题

    24

    帖子

    464

    积分

    Rank: 2Rank: 2

    积分
    464
    发表于 2019-6-12 11:31:02 | 显示全部楼层 |阅读模式

    正式员工 |主题 1|帖子 24|积分 464

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
    本帖最后由 tystq 于 2019-6-12 15:46 编辑

    如题,没有搞明白send_mouse_down_event,send_mouse_up_event等如何使用,猜测是向指定窗口发送鼠标信号事件,但是执行的时候始终报错5123,希望实现的功能是draw_circle等阻塞算子不手动点击右键就能退出

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    开心
    昨天 09:22
  • 签到天数: 471 天

    连续签到: 3 天

    [LV.9]以坛为家II

    112

    主题

    552

    帖子

    3001

    积分

    Rank: 9

    积分
    3001

    热心会员突出贡献切换助手验证会员最佳新人

    发表于 2019-6-12 14:24:19 | 显示全部楼层

    管理员 |主题 112|帖子 552|积分 3001

    1.引用命名空间
    1. using System.Runtime.InteropServices;
    复制代码

    2.声明函数
    1. [DllImport("user32.dll")]
    2. public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

    3. [DllImport("user32.dll")]
    4. public static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
    复制代码

    3.实现代码(窗口名称和Class名称用spy++去找就可以了):
    1. IntPtr myIntPtr = FindWindow(null, "HALCON/WIN32-3600");
    2. mouse_event(CWindowsApi.MOUSEEVENTF_RIGHTDOWN | CWindowsApi.MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
    复制代码

    然后在绘制的时候可以发给Halcon的窗口也可以自己定义自己的窗口句柄去模拟鼠标右键!

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    耍酷
    2019-7-9 08:36
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    1

    主题

    24

    帖子

    464

    积分

    Rank: 2Rank: 2

    积分
    464
     楼主| 发表于 2019-6-12 15:02:40 | 显示全部楼层

    正式员工 |主题 1|帖子 24|积分 464

    绝地武士 发表于 2019-6-12 14:24
    1.引用命名空间

    2.声明函数

    感谢你的回到,但是mouse_event模拟鼠标右键对halcon绘图完全无效,不信你自己去验证

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    耍酷
    2019-7-9 08:36
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    1

    主题

    24

    帖子

    464

    积分

    Rank: 2Rank: 2

    积分
    464
     楼主| 发表于 2019-6-12 15:20:08 | 显示全部楼层

    正式员工 |主题 1|帖子 24|积分 464

    绝地武士 发表于 2019-6-12 14:24
    1.引用命名空间

    2.声明函数

    根据你的思路,修改成下面的代码可以了
    IntPtr myIntPtr = FindWindow(null, "HALCON/WIN32-200000");
                SetForegroundWindow(myIntPtr);//前置
                // mouse_event(0x8 | 0x10, 0, 0, 0, 0);
                mouse_event(0x8 , 0, 0, 0, 0);//鼠标右键按下
                System.Threading.Thread.Sleep(100);
                mouse_event( 0x10, 0, 0, 0, 0);//鼠标右键弹起

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    开心
    昨天 09:22
  • 签到天数: 471 天

    连续签到: 3 天

    [LV.9]以坛为家II

    112

    主题

    552

    帖子

    3001

    积分

    Rank: 9

    积分
    3001

    热心会员突出贡献切换助手验证会员最佳新人

    发表于 2019-6-12 15:20:46 | 显示全部楼层

    管理员 |主题 112|帖子 552|积分 3001

    tystq 发表于 2019-6-12 15:02
    感谢你的回到,但是mouse_event模拟鼠标右键对halcon绘图完全无效,不信你自己去验证 ...

    HDevelop中我已经验证了,draw_*算子执行后你需要绘制任意图形(否则直接右键也不行),然后就可以发送消息模拟右键就可以结束绘制!

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    耍酷
    2019-7-9 08:36
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    1

    主题

    24

    帖子

    464

    积分

    Rank: 2Rank: 2

    积分
    464
     楼主| 发表于 2019-6-12 15:24:00 | 显示全部楼层

    正式员工 |主题 1|帖子 24|积分 464

    绝地武士 发表于 2019-6-12 15:20
    HDevelop中我已经验证了,draw_*算子执行后你需要绘制任意图形(否则直接右键也不行),然后就可以发送消 ...

    感谢你的思路,已经OK,追加了前置和鼠标右键按下和弹起中间延时操作就OK啦

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    耍酷
    2019-7-9 08:36
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    1

    主题

    24

    帖子

    464

    积分

    Rank: 2Rank: 2

    积分
    464
     楼主| 发表于 2019-6-12 15:47:44 | 显示全部楼层

    正式员工 |主题 1|帖子 24|积分 464

    绝地武士 发表于 2019-6-12 15:20
    HDevelop中我已经验证了,draw_*算子执行后你需要绘制任意图形(否则直接右键也不行),然后就可以发送消 ...

    刚才去C#中验证了,在窗体hWindowControl中绘图时无效

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    耍酷
    2019-7-9 08:36
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    1

    主题

    24

    帖子

    464

    积分

    Rank: 2Rank: 2

    积分
    464
     楼主| 发表于 2019-6-12 16:26:52 | 显示全部楼层

    正式员工 |主题 1|帖子 24|积分 464

    绝地武士 发表于 2019-6-12 15:20
    HDevelop中我已经验证了,draw_*算子执行后你需要绘制任意图形(否则直接右键也不行),然后就可以发送消 ...

    更奇怪的是把  mouse_event(0x8 | 0x10, 0, 0, 0, 0);写在button的MouseDown事件中点击按钮是可以的,但是写在Click事件中点击按钮就不行

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    开心
    昨天 09:22
  • 签到天数: 471 天

    连续签到: 3 天

    [LV.9]以坛为家II

    112

    主题

    552

    帖子

    3001

    积分

    Rank: 9

    积分
    3001

    热心会员突出贡献切换助手验证会员最佳新人

    发表于 2019-6-12 16:36:32 | 显示全部楼层

    管理员 |主题 112|帖子 552|积分 3001

    tystq 发表于 2019-6-12 15:47
    刚才去C#中验证了,在窗体hWindowControl中绘图时无效

    C#窗体中要获取C#窗口的句柄不是你抓的那个HALCON/WIN32-200000了,而且在C#中窗口控件有单独的事件,你需要加载到窗口的事件中而不是Click!

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    耍酷
    2019-7-9 08:36
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    1

    主题

    24

    帖子

    464

    积分

    Rank: 2Rank: 2

    积分
    464
     楼主| 发表于 2019-6-12 17:31:06 | 显示全部楼层

    正式员工 |主题 1|帖子 24|积分 464

    绝地武士 发表于 2019-6-12 16:36
    C#窗体中要获取C#窗口的句柄不是你抓的那个HALCON/WIN32-200000了,而且在C#中窗口控件有单独的事件,你需 ...

    大神,经过摸索,发现halcon绘图指令响应的右键是全局的,跟窗口无关,即使你在Excel窗口下点击鼠标右键,也能终止绘图(c#中一样)
    [DllImport("user32.dll")]
            private static extern int SetCursorPos(int x, int y);
            /// <summary>
            /// 移动鼠标到指定的坐标点
            /// </summary>
            public void MoveMouseToPoint(Point p)
            {
                SetCursorPos(p.X, p.Y);
            }

    //先移动鼠标到this.hWindowControl1左上角是可以的,但是放在Form1_FormClosing中无效,就是用户忘记点鼠标右键后无法退出绘图指令
      MoveMouseToPoint(PointToScreen(this.hWindowControl1.Location));
       mouse_event(0x8 | 0x10, 0, 0, 0, 0);

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用反馈 | 51Halcon论坛管理团队论坛管理团队

    申请友链| 小黑屋| 手机版| Archiver|  

    粤ICP备15095995号-2 粤公网安备44030602000670号

    Powered by 51Halcon机器视觉 X3.4 Licensed© 2015-2019 Comsenz Inc.

    快速回复 返回顶部 返回列表