开源 C++配合大漠插件实现的消息泵模式按键模拟编程_第1页
开源 C++配合大漠插件实现的消息泵模式按键模拟编程_第2页
开源 C++配合大漠插件实现的消息泵模式按键模拟编程_第3页
开源 C++配合大漠插件实现的消息泵模式按键模拟编程_第4页
开源 C++配合大漠插件实现的消息泵模式按键模拟编程_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论