当前位置: 首页 > news >正文

有哪些好的ps素材网站最好的app开发公司

有哪些好的ps素材网站,最好的app开发公司,智能建站与正常的网站,做网站公司哪个品牌好功能使用场景: 开发一个教学系统,包含了教师端、学生端,并且教师端支持示教功能。此时,学生端的鼠标、键盘不响应系统事件,但需要响应教师端发过来的鼠标移动、按下消息。 因为共享页面相同,为了提高局域…

功能使用场景:

开发一个教学系统,包含了教师端、学生端,并且教师端支持示教功能。此时,学生端的鼠标、键盘不响应系统事件,但需要响应教师端发过来的鼠标移动、按下消息。

因为共享页面相同,为了提高局域网实时效率,采用UDP通讯方式,使用共享鼠标的方式最快(目前我没有找到比这个更快的了,如果有,小伙伴可以评论区告诉我哟,我也学习下)

在实现功能时,主要实现方式:使用钩子函数,处理系统发送的鼠标以及键盘消息。

那么禁用掉教师端的鼠标键盘消息后,如何在教师端响应按下消息时,也让学生端响应呢?

此时,就需要模拟鼠标按下消息,并且需要区分哪些消息是模拟的,哪些是PC机自己发送的。这是本文的重点!

模拟鼠标左键消息

项目中采用了WIN32的方式,可以应用到Qt框架中(我觉得比Qt的MouseEvent方式更简单)

int nPointX = 100;
int nPointY = 100;
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN, nPointX, nPointY, 0, 200);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP, nPointX, nPointY, 0, 200);

注意:大家有没有发现使用mouse_event的最后一个参数,不是0而是一个具体的值,那么,在这里这个值有什么用呢?

回答:"200"这个值就是用来区分系统的鼠标消息与自定义消息的。当使用钩子函数禁用鼠标左键消息时,只需要屏蔽由鼠标发送的消息,而不需要屏蔽模拟鼠标消息,这样保证了在示教过程中任何点击事件都是由教师端控制的。

钩子函数应用

1:禁用键盘消息

HHOOK hook_hwnd_mouse = NULL;
HMODULE g_moduleMouse;LRESULT CALLBACK KeyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{KBDLLHOOKSTRUCT* pkbhs = (KBDLLHOOKSTRUCT*)lParam;if (nCode == HC_ACTION){if (wParam == WM_KEYDOWN || wParam == WM_KEYUP){//qDebug() << QStringLiteral("当前是键盘消息!");return TRUE;}}return CallNextHookEx(NULL, nCode, wParam, lParam);
}

在开启教师端示教功能时,开启对钩子函数的应用,关闭时解除钩子函数

//开启钩子函数
hook_hwnd_key = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProc, g_moduleKeyboard, 0);
//取消钩子函数
UnhookWindowsHookEx(hook_hwnd_key);

使用这种方式可以禁用所有的键盘消息。

2:禁用鼠标移动消息

HHOOK hook_hwnd_mouse = NULL;
HMODULE g_moduleMouse;//鼠标事件
LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{if (nCode == HC_ACTION){switch (wParam){case WM_MOUSEWHEEL: // 忽略鼠标滚轮输入,禁用滑动case WM_MOUSEMOVE:return TRUE; // 拦截消息,不再传递}}return CallNextHookEx(NULL, nCode, wParam, lParam);
}

控制钩子函数的开启与释放,代码如下:

//开启钩子函数
hook_hwnd_mouse = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProc, g_moduleMouse, 0);
//关闭钩子函数
UnhookWindowsHookEx(hook_hwnd_mouse);

3:禁用特定鼠标左键消息

在第二个功能的基础上,钩子函数需要捕获鼠标左键按下、弹起的消息

//鼠标事件
LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{if (nCode == HC_ACTION){switch (wParam){case WM_MOUSEWHEEL: // 忽略鼠标滚轮输入,禁用滑动case WM_MOUSEMOVE:return TRUE; // 拦截消息,不再传递case WM_LBUTTONDOWN:case WM_LBUTTONUP:{MOUSEHOOKSTRUCT* pMouseHookStruct = reinterpret_cast<MOUSEHOOKSTRUCT*>(lParam);if (dwExtraInfo == 0){return TRUE; //屏蔽鼠标的消息}}break;}}return CallNextHookEx(NULL, nCode, wParam, lParam);
}

注:dwExtraInfo由鼠标按下传过来的参数值是0,mouse_event模拟的消息中,dwExtraInfo是200。由此,就能区分出需要屏幕哪些按键消息了。

好了,到这里就结束啦,代码简单,难的是查询函数功能,希望对小伙伴们有用哟!

我是糯诺诺米团,一名C++程序媛~

http://www.yayakq.cn/news/825315/

相关文章:

  • 建网站服务器是什么东西南京绿色建筑网官网
  • 长春网站建设长春做网站公司公司哪些网站可以做驾考试题
  • 温州网站建设培训班wordpress主机在哪里看
  • 做富集的网站个人备案网站放什么手续
  • 深圳网站设计 深圳信科新葡京网址网站建设
  • 网站系统下载wordpress插件更新推送
  • 济宁网上做科目一的网站乐潍清网站额建设
  • 哪个网站可以帮忙做简历长沙企业网站设计
  • 怎么看网站建设昆明网红打卡景点
  • 户县建设局网站移动网站建设厂家
  • 网站建设app开发学习网页设计代码的意思
  • 建设通网站怎么投诉安卓搭建wordpress
  • 湘潭建设企业网站html5 电商网站模板
  • 单位网站建设的重要性黑河网站seo
  • 村级网站建站一个网站备案两个域名吗
  • 信誉好的武进网站建设江阴企业网站建设哪家好
  • 标准网站建设推荐wordpress猫咪主题
  • 织梦网站后台模版更换网站落地页和普通网页
  • 收费网站建设网站运营要会什么技术
  • 小型企业网站开发公司工程设计方案主要内容
  • 注册网站刀具与钢材经营范围经典的公司简介
  • 四大门户网站合肥网站建设网新
  • 西安大网站建设公司深圳企业推广网站
  • 小网站做几个关键词上海有名公司有哪些
  • 建设网络道德教育网站不包括湖北百度seo
  • 网站外链隐形框架做自己的直播网站
  • o2o网站制作北京海淀月嫂家政公司
  • 怎么查网站的关键词排名微博大v推广一次多少钱
  • 站开发技术培训扬州住房与城乡建设局网站
  • 集团微信网站方案策划东莞企业网站哪家好