版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、开源5配合大漠插件实现的消息泵模式按键模拟编程开发背景:某天正在用OPENGL写一个UI界面库,发现实现过程越来越很有趣,一发不可收拾。于是想着能不能在逻辑型代码上实现类似界面的那种思维。花了 2天写的,对新手或者老手都是会有帮助的。这个类库的特点:逻辑全部封装,你只需要提供要执行的行为,已经行为达到某个触发条件执行特定的事物。执行Execu即可。免去了大量重复的逻辑判断,大量的重复的函数调用。加载大漠插件避开了 COM组件注册表机制,用的WIN32方式加载示例代码:代码:DmFindPic PicBaiDu_Open;/点击召唤师资料DmFindPic PicBaiDu_Yixia;/查找是
2、否有装备设置图标 但不点击PicBaiDu_Open.SetPicName(.1.bmp);PicBaiDu_Yixia.SetPicName(.2.bmp);(PicBaiDu_Yixia.Enable_Click_whileFind(false);/找到图片不点击PicBaiDu_Yixia.Enable_break_whileFind();/找到了就退出 applDmABCDEFG_ACTION Yidong;Yidong.SetWay(偏移,100,20);PicBaiDu_Yixia.AddSubDo(&Yidong);DmABCDEFG_ACTION Shuangji;Shuang
3、ji.SetWay(双击,NULL);PicBaiDu_Yixia.AddSubDo(&Shuangji);DmABCDEFG_ACTION Shuru;Shuru.SetWay(输入文字,测试);Shuru.Enable_break_whileFind();PicBaiDu_Yixia.AddSubDo(&Shuru);Mydm dm1;dm1.MianzhuCe();dm1.RegDM();DmManger app1;app1.AttachDm(&dm1);app1.SetDoAndDo_Time(10);app1.SetSleepFunc(BindSleep(Mysleep);app1.
4、AddDo(&PicBaiDu_Open);app1.AddDo(&PicBaiDu_Yixia);while (app1.Execu()=false)(OutputDebugStringA(false);AfxMessageBox(over);/ TODO:在此添加控件通知处理程序代码示例代码2:引用:void CMFCApplication1Dlg:OnBnClickedButton3()/ TODO:在此添加控件通知处理程序代码.DmFindPic PicBaiDu_Open;/点击召唤师资料DmFindPic PicBaiDu_Yixia;/查找是否有装备设置图标但不点击DmFinSt
5、r findstr;PicBaiDu_Open.SetPicName(.1.bmp”);PicBaiDu_Open.SetMove_ClickTime(1000);PicBaiDu_Yixia.SetPicName(.2.bmp”);findstr.SetDicAndStr(0,PLAY”,f4dbb4-222222);PicBaiDu_Yixia.Enable_Click_whileFind(false);/找到图片不点击PicBaiDu_Yixia.Enable_break_whileFind();/找到了就返回找到了返回前执行自己的自定义函数PicBaiDu_Yixia.SetFindC
6、allBack(MyBinFindOrNoFindCallBack(ok90);Mydm dm1;dm1.MianzhuCe();dm1.RegDM();dm1.dm-SetDict(0,.dic.txt);DmManger app1;app1.AttachDm(&dm1);app1.SetDoAndDo_Time(1000);app1.SetSleepFunc(BindSleep(Mysleep);app1.AddDo(&PicBaiDu_Open);app1.AddDo(&findstr);app1.AddDo(&PicBaiDu_Yixia);执行返回真的话执行这段代码app1.Crea
7、teWith_DmABCDEFG_ACTION(0,偏移,100,20,双击,单击,输入文字,TEST);while (app1.Execu()=false)OutputDebugStringA(false);AfxMessageBox(over);代码的主要执行体为DmManger:代码:#include stdafx.h”#include DmManger.hDmManger:DmManger(void)dmCur =NULL;node.clear();NeedABCDEFG WhileTrue 二false;/sleepFuc =NULL;DmManger:DmManger(void)b
8、ool DmManger:AttachDm(Mydm* dm)if (!dm)匚Msg(传入对象为空,s,FunStr(无效的对象地址);return false;匚dmCur =dm;return true;void DmManger:Msg(char* Str,.)va list args;va start(args,Str);vsprintf(MsgBuf,Str,args);va end(args);:MessageBoxA(0,MsgBuf,:,0);bool DmManger:Execu()for (auto i = node.begin() ;i!=node.end();i+)(
9、*i)-NodeDm二dmCur;/ sleepFuc(DoAndDoTime);if (sleepFuc)return false;void DmManger:AddDo(DmNode* node)node.push back(node); void DmManger:SetSleepFunc(SleepFunc fuc)sleepFuc = fuc; void DmManger:SetDoAndDo Time(int time)DoAndDoTime = time; void DmManger:DoSleep()if (sleepFuc)sleepFuc(DoAndDoTime);匚 vo
10、id DmManger:Reset()node.clear(); void DmManger:MoveToLastXY(int OffX,int offY)DoSleep();dmCur-dm-MoveTo(LastX.lVal +OffX ,LastY.lVal+offY);DoSleep();dmCur-dm-LeftClick();DoSleep(); void DmManger:CreateWith DmABCDEFG ACTION(int type,.) NeedABCDEFG WhileTrue 二true;va list va;va start(va,type);int type
11、x=0;typex=va arg(va,int);while (typex!=0)if (typex=二双击)OutputDebugStringA(创建双击动作);std:shared ptr ptest( new DmABCDEFGACTION();/ DmABCDEFG ACTION* pt-pt=(new DmABCDEFG ACTION();ptest-SetWay(typex);this-ADCDEFG LIST.push back( ptest);else if (typex=二单击)OutputDebugStringA(创建单击); / DmABCDEFG ACTION* pte
12、st= new DmABCDEFG ACTION();std:shared ptr ptest( new DmABCDEFG ACTION();ptest-SetWay(typex);this-ADCDEFG LIST.push back( ptest);else if (typex=二偏移)OutputDebugStringA(创建偏移);std:shared ptr ptest( new DmABCDEFG ACTION();int x= va arg(va,int);int y= va arg(va,int);ptest-SetWay(typex,x,y);this-ADCDEFG LI
13、ST.push back( ptest);else if (typex=输入文字)OutputDebugStringA(创建输入文字);std:shared ptr ptest( new DmABCDEFG ACTION();char* szstr= va arg(va,char*);ptest-SetWay(typex,szstr);this-ADCDEFG LIST.push back( ptest);typex=va arg(va,int);匚void DmManger:Do ImCreateABCDEFG While True()口| if (ADCDEFG LIST.empty()=
14、trU(OutputDebugStringA(Do ImCreateABCDEFG While True 字动作 数组为空,直接返回/ IsFind =true;return;二for (auto i 二 ADCDEFG LIST.begin() ;i!二ADCDEFG LIST.end();i +)二std:shared ptr subnode =*i;/把找到图片后XY传给子动作以便做其他的事subnode-MangerX =LastX;subnode-MangerY =LastY;subnode-NodeDm =this-dmCur;subnode-DoABC();if (subnode-break_whileFind)(if (subnode-IsFind)OutputDebugStringA(find sub);/*IsFind 二true;*/TDoSleep();Tn不能运行请在Mydm.cpp里,Mydm:RegDM实现中,把if ( dm-Reg(改成你的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 牛津译林版(2020)必修一-Unit3 Getting along with others基础夯实训练~词汇短语句型(含答案)
- 2025年高二化学选择性必修2(人教版)同步课件 第二章 第二节 第1课时 分子结构的测定和多样性 价层电子对互斥模型
- 浙江省宁波市第七中学2024-2025学年九年级上学期期中语文试题(含答案)
- 湖南省九校联盟2025届高三第一次联考化学试题(含答案)
- 福建省漳州市平和县广兆中学2024-2025学年八年级上学期期末道德与法治试题(无答案)
- 高一 人教版 英语必修一 第一单元《Lesson 4 Discovering Useful Structures》课件
- 绿色建筑之经典美术馆案例分析
- 五年级语文上册《28.毛主席在花山》
- 高一人教版英语必修一Unit 4《NATURAL DISASTERS Lesson Two Reading and Thinking》 课件
- 浙江省宁波市2023-2024学年高三上学期语文期末考试试卷
- 轴流风机液压缸介绍及问题处理办法
- 北京保障性住房政策文件
- 中小学与幼儿园校园周边道路交通设施设置
- 干部任免审批表1
- 《广东省安装工程综合定额》第九册《通风空调工程》
- 重庆市课程改革课程设置及实施指导意见
- 浅谈热贡霍念藏地区的五月嘛尼法会
- 水资源管理工作程序PPT课件
- 上海石油天然气管道保护范围内特定施工作业申请
- 民航机场不停航施工管理及技术措施
- 施耐德断路器产品参数样本
评论
0/150
提交评论