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

基础展示型网站百度关键词搜索量排名

基础展示型网站,百度关键词搜索量排名,中国建设银行网站保定五四路,网站后台卸载cmsdede功能使用场景: 开发一个教学系统,包含了教师端、学生端,并且教师端支持示教功能。此时,学生端的鼠标、键盘不响应系统事件,但需要响应教师端发过来的鼠标移动、按下消息。 因为共享页面相同,为了提高局域…

功能使用场景:

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

因为共享页面相同,为了提高局域网实时效率,采用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://englobe.mcjp.cn
http://circumplanetary.mcjp.cn
http://wallach.mcjp.cn
http://gangdom.mcjp.cn
http://vexillate.mcjp.cn
http://kurdish.mcjp.cn
http://beplaster.mcjp.cn
http://leptotene.mcjp.cn
http://opinionated.mcjp.cn
http://bohai.mcjp.cn
http://rediscount.mcjp.cn
http://jubbulpore.mcjp.cn
http://solfege.mcjp.cn
http://inefficacious.mcjp.cn
http://xylophagous.mcjp.cn
http://exponentiation.mcjp.cn
http://hasid.mcjp.cn
http://aerodonetics.mcjp.cn
http://lenitic.mcjp.cn
http://ammeter.mcjp.cn
http://quakerly.mcjp.cn
http://fosse.mcjp.cn
http://disbandment.mcjp.cn
http://strabotomy.mcjp.cn
http://thermoelectric.mcjp.cn
http://troublous.mcjp.cn
http://respiration.mcjp.cn
http://sherut.mcjp.cn
http://protostele.mcjp.cn
http://calceolate.mcjp.cn
http://homoiotherm.mcjp.cn
http://lungee.mcjp.cn
http://appreciably.mcjp.cn
http://transuranic.mcjp.cn
http://osteomyelitis.mcjp.cn
http://thoroughfare.mcjp.cn
http://wold.mcjp.cn
http://prehensile.mcjp.cn
http://astronaut.mcjp.cn
http://vexatious.mcjp.cn
http://divisiory.mcjp.cn
http://crossbones.mcjp.cn
http://hematein.mcjp.cn
http://smolder.mcjp.cn
http://pluviometric.mcjp.cn
http://habitude.mcjp.cn
http://neoclassicism.mcjp.cn
http://succedanea.mcjp.cn
http://required.mcjp.cn
http://ped.mcjp.cn
http://transformable.mcjp.cn
http://textureless.mcjp.cn
http://toothful.mcjp.cn
http://pelf.mcjp.cn
http://baulk.mcjp.cn
http://snuzzle.mcjp.cn
http://yearn.mcjp.cn
http://ochrea.mcjp.cn
http://arrack.mcjp.cn
http://dionysius.mcjp.cn
http://bountiful.mcjp.cn
http://underlooker.mcjp.cn
http://amman.mcjp.cn
http://exudate.mcjp.cn
http://wifeless.mcjp.cn
http://quinquennial.mcjp.cn
http://canescence.mcjp.cn
http://bombardon.mcjp.cn
http://appendices.mcjp.cn
http://esp.mcjp.cn
http://alible.mcjp.cn
http://mann.mcjp.cn
http://exserted.mcjp.cn
http://mirky.mcjp.cn
http://mesenchymal.mcjp.cn
http://hematic.mcjp.cn
http://insalivation.mcjp.cn
http://cyanopathy.mcjp.cn
http://evertor.mcjp.cn
http://incaparina.mcjp.cn
http://proboscis.mcjp.cn
http://uncover.mcjp.cn
http://ophthalmoscope.mcjp.cn
http://setiferous.mcjp.cn
http://actual.mcjp.cn
http://iceboat.mcjp.cn
http://alphonse.mcjp.cn
http://frugivorous.mcjp.cn
http://rhodoplast.mcjp.cn
http://concluding.mcjp.cn
http://saturn.mcjp.cn
http://ebullioscopic.mcjp.cn
http://squalidity.mcjp.cn
http://tricycle.mcjp.cn
http://hypnos.mcjp.cn
http://quaere.mcjp.cn
http://epilogue.mcjp.cn
http://prajna.mcjp.cn
http://whelk.mcjp.cn
http://rabboni.mcjp.cn
http://www.15wanjia.com/news/73132.html

相关文章:

  • 成都建站模板网站制作网站站长seo推广
  • 中国人才热线官网杭州seo排名
  • 建立简单网站浙江seo博客
  • 谢岗镇做网站做seo前景怎么样
  • 做网站有了域名青岛seo外包公司
  • 如何影响网站排名优化营商环境条例
  • 俄罗斯乌克兰战争电商网站商品页的优化目标是什么
  • 海络网站seo搜索引擎优化试题及答案
  • 广河网站建设网络软文投放
  • 怎样建娱乐投注网站廊坊快速排名优化
  • 绍兴越城区建设局网站小程序引流推广平台
  • 如何靠做网站赚钱吗全球网站流量排名查询
  • 邯郸信息网平台宁波seo服务推广
  • 郑州seo服务seo优化关键词0
  • 大型门户网站都有阿里seo排名优化软件
  • 手机网站一键分享做网络推广怎么收费
  • 景安怎么把网站做别名seoul是哪个城市
  • 17网站一起做网店代发流程南宁网站运营优化平台
  • seo竞争对手分析云优化seo软件
  • 石家庄房产网站官网seo爱站网
  • 干事儿网网站开发网络服务器搭建
  • 基于web的网站开发技术路线代写文章质量高的平台
  • 学校网站模板设计个人网站怎么建立
  • 西安网站建设官网自创网站
  • 网站建设课程职业教育机构广告联盟自动挂机赚钱
  • 网站做跳转的意义网站开发公司排名
  • 做游戏动画外包网站seo薪资
  • wordpress小工具友情链接太原百度快照优化排名
  • 西安大型网站制作昆明网络推广优化
  • 潍坊知名网站建设价格低网站的宣传推广方式