VC大漠实例
大漠插件背景色识别用法
大漠插件背景色识别用法大漠插件是一款专业的自动化工具,可用于抓取屏幕信息、识别验证码等操作。
其中,背景色识别功能是其重要的功能之一。
本文将针对大漠插件背景色识别的用法进行详细的介绍。
一、背景色识别的原理大漠插件背景色识别功能的原理是通过识别指定区域的背景颜色RGB 值,从而判断是否出现了目标界面或元素。
具体来说,它使用了屏幕颜色取色技术和像素点图像处理算法,实现了准确、高效的背景色识别效果。
二、背景色识别的操作步骤1. 准备工作首先需要确认要识别的区域,一般可以通过找到目标窗口、元素的坐标位置,或者用鼠标画出需要识别的区域。
同时,需要准备好目标界面,确保目标界面已经运行并处于正确的状态。
2. 设置和配置在大漠插件中,背景色识别是作为一种脚本操作来实现的。
因此,首先需要编写一个脚本,并在其中添加背景色识别的相关命令。
具体来说,可以使用以下命令进行设置和配置:SetExactOcr True:设置精准识别模式。
SetDictPwd "123456":设置词典密码,用于识别英文、数字等图像。
3. 进行背景色识别完成设置和配置之后,就可以进行背景色识别了。
具体来说,可以使用以下命令:GetColor(int x1,int y1,int x2,int y2,string color):获取指定区域的颜色值。
如果返回的颜色值与目标界面的背景色一致,那么就说明目标界面出现了。
使用示例:GetColor(100, 200, 300, 400, "ffffff")其中,参数x1,y1,x2,y2指定要识别的区域的左上角和右下角坐标,color参数指定要识别的颜色值。
三、背景色识别的优势及应用场景相比于其他的自动化工具,大漠插件的背景色识别功能具有如下优势:1.准确性高:通过对颜色的准确识别,可以实现高度的识别准确度。
2.稳定性好:不受字体、字号、字体颜色等因素的影响,因此不易出现识别错误。
vc6.0可视化编程实例 -回复
vc6.0可视化编程实例-回复vc6.0可视化编程实例是指在使用Microsoft Visual C++ 6.0编程工具进行可视化编程时的具体案例。
本篇文章将详细介绍vc6.0可视化编程实例的具体步骤和相关知识,以帮助读者更好地理解和应用可视化编程技术。
第一步:创建新项目首先,在vc6.0编程工具中点击“文件”菜单,选择“新建”->“项目”,然后在弹出的对话框中选择“Win32应用程序”作为项目类型。
接下来,填写项目名称、位置和解决方案等相关信息,点击“确定”按钮创建新项目。
第二步:设计界面在vc6.0中,可视化编程使用的是MFC(Microsoft Foundation Class)技术,通过使用控件和对话框设计工具来创建界面。
在解决方案资源视图中找到项目名称,展开后找到“资源文件”文件夹,并双击“资源文件.rc”文件,进入资源编辑器界面。
在资源编辑器中,用户可以通过拖放控件的方式设计界面。
例如,可以从“工具箱”控件面板中选择按钮控件,然后点击对话框中的位置放置按钮控件。
通过设置按钮的大小、位置、文字等属性来调整控件的外观。
在这个例子中,我们将在界面中放置一个按钮控件,用于实现一个简单的点击事件。
第三步:编写代码在界面设计完成后,我们需要为按钮添加点击事件的响应。
点击“类视图”选项卡,在其中找到对应的对话框类,通常以C开头,右键点击该类,选择“添加”->“函数”,并填写函数名称和返回类型等属性。
在弹出的函数编辑对话框中,输入要执行的代码。
例如,我们可以在按钮的点击事件函数中添加一段代码,用于弹出一个消息框显示一条消息。
在这个例子中,我们将添加一段代码,使点击按钮后弹出一个对话框,显示“Hello, world!”的消息。
第四步:编译和运行完成代码编写后,点击“生成”菜单,选择“生成解决方案”,或者直接按下F7键进行编译。
编译成功后,可以在输出窗口中查看编译结果。
接下来,点击“调试”菜单,选择“开始执行”或者按下F5键进行调试运行。
开源 C++配合大漠插件实现的消息泵模式按键模拟编程
开源C++配合大漠插件实现的消息泵模式按键模拟编程开发背景:某天正在用OPENGL写一个UI界面库,发现实现过程越来越很有趣,一发不可收拾。
于是想着能不能在逻辑型代码上实现类似界面的那种思维。
花了2天写的,对新手或者老手都是会有帮助的。
这个类库的特点:逻辑全部封装,你只需要提供要执行的行为,已经行为达到某个触发条件执行特定的事物。
执行Execu即可。
免去了大量重复的逻辑判断,大量的重复的函数调用。
加载大漠插件避开了COM组件注册表机制,用的WIN32方式加载示例代码:代码:DmFindPic PicBaiDu_Open;//点击召唤师资料DmFindPic PicBaiDu_Yixia;//查找是否有装备设置图标但不点击PicBaiDu_Open.SetPicName(".\\1.bmp");PicBaiDu_Yixia.SetPicName(".\\2.bmp");{PicBaiDu_Yixia.Enable_Click_whileFind(false);//找到图片不点击PicBaiDu_Yixia.Enable_break_whileFind();//找到了就退出app1DmABCDEFG_ACTION Yidong;Yidong.SetWay(偏移,100,20);PicBaiDu_Yixia.AddSubDo(&Yidong);DmABCDEFG_ACTION Shuangji;Shuangji.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.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;//查找是否有装备设置图标但不点击 DmFinStr 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.SetFindCallBack(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.CreateWith_DmABCDEFG_ACTION(0,偏移,100,20,双击,单击,输入文字,"TEST");while (app1.Execu()==false){OutputDebugStringA("false");}AfxMessageBox("over");}代码的主要执行体为DmManger:代码:#include "stdafx.h"#include "DmManger.h"DmManger::DmManger(void){dmCur =NULL;node.clear();NeedABCDEFG_WhileTrue =false;//sleepFuc =NULL;}DmManger::~DmManger(void){}bool 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++) {(*i)->NodeDm=dmCur;// sleepFuc(DoAndDoTime);if (sleepFuc){(*i)->funcSleep = sleepFuc;}(*i)->Do();DoSleep();if ((*i)->break_whileFind){if ((*i)->IsFind){LastX =(*i)->X;LastY =(*i)->Y;Do_ImCreateABCDEFG_While_True(); return true;}}}return false;}bool DmManger::Execu(int DoAndDoTime_) {for (auto i = node.begin() ;i!=node.end();i++){(*i)->NodeDm=dmCur;if (sleepFuc){(*i)->funcSleep = sleepFuc;}(*i)->Do();DoAndDoTime =DoAndDoTime_;DoSleep();if ((*i)->break_whileFind || (*i)->break_whileNoFind) {if ((*i)->IsFind){LastX =(*i)->X;LastY =(*i)->Y;Do_ImCreateABCDEFG_While_True();return true;}}}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);}}void 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 typex=0;typex=va_arg(va,int);while (typex!=0){if (typex==双击){OutputDebugStringA("创建双击动作");std::shared_ptr<DmABCDEFG_ACTION> ptest( new DmABCDEFG _ACTION());// DmABCDEFG_ACTION* pt->pt_=(new DmABCDEFG_ACTION());ptest->SetWay(typex);this->ADCDEFG_LIST.push_back( ptest);}else if (typex==单击){OutputDebugStringA("创建单击");// DmABCDEFG_ACTION* ptest= new DmABCDEFG_ACTION();std::shared_ptr<DmABCDEFG_ACTION> ptest( new DmABCDEFG_A CTION());ptest->SetWay(typex);this->ADCDEFG_LIST.push_back( ptest);}else if (typex==偏移){OutputDebugStringA("创建偏移");std::shared_ptr<DmABCDEFG_ACTION> ptest( new DmABCDEFG_A CTION());int x= va_arg(va,int);int y= va_arg(va,int);ptest->SetWay(typex,x,y);this->ADCDEFG_LIST.push_back( ptest);}else if (typex==输入文字){OutputDebugStringA("创建输入文字");std::shared_ptr<DmABCDEFG_ACTION> ptest( new DmABCDEFG_A CTION());char* szstr= va_arg(va,char*);ptest->SetWay(typex,szstr);this->ADCDEFG_LIST.push_back( ptest);}typex=va_arg(va,int);}va_end(va);}void DmManger::Do_ImCreateABCDEFG_While_True(){if (ADCDEFG_LIST.empty()==true){OutputDebugStringA("Do_ImCreateABCDEFG_While_True 字动作数组为空,直接返回");// IsFind =true;return;}for (auto i = ADCDEFG_LIST.begin() ;i!=ADCDEFG_LIST.end();i ++){std::shared_ptr<DmABCDEFG_ACTION> 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;*/}}DoSleep();}}不能运行请在Mydm.cpp里,Mydm::RegDM实现中,把if ( dm->Reg("改成你的大漠注册码","")!=1)DmABCDEFG_ACTION.cpp中void DmABCDEFG_ACTION::Do()里面输入文字那一段使用了LOL的窗口句柄,自己可以修改一下框架,很简单,+LONG类型成员即可代码需要C++11支持:vs2012以及更高的版本即可。
大漠调用例子
大漠调用例子大漠调用是一种基于互联网的API服务,可以帮助开发者快速实现文字识别、语音合成、图像识别等功能。
以下是关于大漠调用的十个使用例子:1. 文字识别:通过大漠调用的文字识别功能,可以将图片中的文字提取出来,实现自动化文档处理。
比如,可以将纸质文件扫描后,通过大漠调用的文字识别API将其中的文字提取出来,再进行后续处理,如自动分类、关键词提取等。
2. 人脸识别:大漠调用的人脸识别API可以识别图片中的人脸,并提取出人脸的特征信息。
开发者可以利用这个功能,实现人脸登录、人脸支付等应用。
3. 图像识别:通过大漠调用的图像识别功能,可以识别图片中的物体、场景等信息。
比如,可以通过大漠调用的图像识别API,将旅游照片中的名胜古迹、美食等信息提取出来,方便用户进行查找和分享。
4. 语音合成:大漠调用的语音合成API可以将文字转换为语音。
开发者可以利用这个功能,实现语音导航、语音播报等应用。
5. 语音识别:通过大漠调用的语音识别功能,可以将语音转换为文字。
比如,可以利用大漠调用的语音识别API,实现语音搜索、语音输入等功能。
6. 智能客服:通过大漠调用的自然语言处理功能,可以实现智能客服系统。
比如,可以利用大漠调用的自然语言处理API,实现智能问答、智能推荐等功能,提升用户体验。
7. 情感分析:通过大漠调用的情感分析功能,可以分析文本中的情感倾向。
比如,可以利用大漠调用的情感分析API,对用户的评论进行情感分析,从而了解用户的满意度,进行产品改进。
8. 垃圾邮件过滤:通过大漠调用的自然语言处理功能,可以实现垃圾邮件过滤。
利用大漠调用的文本分类API,可以将邮件进行分类,将垃圾邮件过滤掉,提高邮件处理效率。
9. 智能翻译:通过大漠调用的自然语言处理功能,可以实现智能翻译。
比如,可以利用大漠调用的机器翻译API,将中文翻译为英文或其他语言,方便用户进行跨语言交流。
10. 自动摘要:通过大漠调用的自然语言处理功能,可以实现自动摘要。
大漠插件 findpic技巧
大漠插件 findpic技巧
大漠插件是一种常用于游戏辅助的软件工具,具有自动捕获屏幕上的任何区域进行截图,并能自动屏蔽截图时的鼠标界面,还具有多图连抓、简单界面操作等特性。
而FindPic是其中的一种功能,主要用于查找图片。
使用大漠插件FindPic功能时,需要注意以下几点技巧:
1. 确保插件版本是最新的,以便获取最新的查找功能和修复可能存在的错误。
2. 在使用FindPic功能之前,先了解该功能的参数设置。
例如,相似度参数sim,取值范围在之间,可以根据需要调整;查找方向参数dir,可以设定为0:从左到右,从上到下,1:从左到右,从下到上,2:从右到左,从上到下,3:从右到左,从下到上等。
3. 在使用FindPic功能时,可以先尝试一些简单的图片查找,以便熟悉该功能的使用方法和参数设置。
4. 如果需要查找的图片较多,可以先对部分图片进行查找,并逐步扩大查找范围,以避免因查找范围过大而导致的查找效率低下。
5. 注意保存和备份查找结果,以免因误操作或其他原因导致数据丢失。
以上是大漠插件FindPic功能的使用技巧,希望能对你有所帮助。
VB调用大漠dll的3种方法!回复有源码有vb例子(解决占CPU高的问题..
VB调用大漠dll的3种方法! 回复有源码有vb例子(解决占CPU高的问题)=========================================================== ====================='/forum.php?mod=viewthread&tid=118 820&extra=page%3D1'大漠dll下载地址'1 大漠用VB dm = CreateObject(dm.dmsoft)'引用里选上dm.dllPrivate Sub Command1_Click()Dim dm As ObjectDim verSet dm = CreateObject("dm.dmsoft")ver = dm.ver()If Len(ver) = 0 ThenMsgBox "当前大漠插件未能正常调用"ElseMsgBox "当前大漠插件DM.dll版本是:" & verEnd IfEnd Sub' 第一种方法奇卡 cpu 占用高'========================================================== ======================'2 '在VB6里面新建一个对象:dmsoft对象' 引用里选上dm.dll' 通用里新建一个 dmsoft对象'其他插件也可以这样调用 Dim b As New dmsoft 只需要把dmsoft 换成别的插件的类名Dim b As New dmsoft'在VB6里面新建一个对象:dmsoft对象Private Sub Command1_Click()本帖隐藏的内容b.SetWindowText Me.hWnd, "你好" '修改VB的窗口标题b.MoveTo 100, 100End SubPrivate Sub Command2_Click()jb = b.GetForegroundWindow()MsgBox jbEnd SubPrivate Sub Command3_Click()Form1.Caption = "找图"'dm.FindPic 0, 0, 800, 600, App.Path + "\开始.bmp", 0, 0.9, 0, X, yCall b.FindPic(0, 0, 800, 600, "C:\开始.bmp", 0, 0.9, 0, x, y)If x >= 0 Thenb.MoveTo x, y '移动鼠标'dm.LeftClick '移动单击MsgBox "找图找到!"ElseMsgBox "找图没找到!"End IfEnd Sub'========================================================== ======================'3 建立个模块Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)'延时函数 sleepPublic Function Delay(DT As Long)For i = 0 To DT Step 2DoEvents '操作权交给系统否则程序会暂时无响应Sleep 1Next iEnd FunctionPublic Function 注册(dm As Object) As ObjectShell "regsvr32 dm.dll /s" '注册大漠插件到系统Delay 500Set dm = CreateObject("dm.dmsoft") '创建大漠插件End Function'窗体Dim dm As Object '声明 DM 为控件类型Private Sub 句柄_Click()Dim jb As Longjb = dm.GetForegroundWindow()MsgBox "句柄是:" & jbEnd SubPrivate Sub 版本_Click()Form1.Caption = "版本"ver = dm.ver()If Len(ver) = 0 ThenMsgBox "当前大漠插件未能正常调用"ElseMsgBox "当前大漠插件DM.dll版本是:" & verEnd IfEnd SubPrivate Sub 退出_Click()EndEnd SubPrivate Sub 移动_Click()Form1.Caption = "移动鼠标"dm.MoveTo 22, 22 '移动鼠标'dm_ret = dm.LeftClick '移动单击End SubPrivate Sub 找图_Click()Form1.Caption = "找图"'dm.FindPic 0, 0, 800, 600, App.Path + "\开始.bmp", 0, 0.9, 0, X, yCall dm.FindPic(0, 0, 800, 600, App.Path + "\开始.bmp", 0, 0.9, 0, X, y)If X >= 0 Thendm.MoveTo X, y '移动鼠标'dm.LeftClick '移动单击Delay 3000MsgBox "找图找到!"ElseMsgBox "找图没找到!"End IfEnd SubPrivate Sub 文字识别_Click()Form1.Caption = "文字识别"dm.SetDict 0, App.Path + "\DDDD.txt"s = dm.Ocr(0, 0, 200, 100, "ffffff-000000", 1#)MsgBox "识别结果是:" & sEnd SubPrivate Sub 找字_Click()Form1.Caption = "找字"dm.SetDict 0, App.Path + "\DDDD.txt"dm_ret = dm.FindStr(0, 0, 200, 100, "我", "ffffff-000000", 1#, intx, intY)If intx >= 0 Thendm.MoveTo intx, intYMsgBox "找字找到!"ElseMsgBox "找字没找到!"End IfEnd SubPrivate Sub Form_Load()On Error Resume Next '容错处理遇到错误直接执行下面的语句注册 dmEnd Sub。
批量提取整理QQ群成员信息
我用VC和大漠制作了“自动提取整理QQ群信息系统”,加入会员的朋友可以免费获得,并享有永久更新的待遇(采用机器码注册的方式,一机一用)。
提取整理QQ群成员信息
目的:批量提取群成员的QQ信息,是后续定向营销推广的重要数据。
ห้องสมุดไป่ตู้
(一)加入群,访问群空间,群成员
(二)在页面上全选ctrl+a,复制ctrl+c,然后新建一个txt文件,粘贴ctrl+v
(三)将txt文件中的内容全选后复制到Excel表中
(四)发现QQ号码前面都有-,所以用数据-分列-分隔符号(填写-)
(五)稍微整理一下有了雏形,但有很多空白行,要删除这些空白行
(六)ctrl+g,打开定位,定位条件选“空值”,对任意一个选中的单元格右键,然后选择"删除",弹出对话框,默认是停留在下方单元格上移处,调到“整行”处,然后确定即可。
(七)做成********@,批量发邮件或者出售这些信息都可以的了。
第三章 大漠窗口绑定和后台的实现
大漠窗口绑定和后台的实现一什么是后台后台功能的实现是按键类外挂的一个飞跃。
从按键启动以后霸占整个电脑,实现了不影响用户其他操作;实现了同时对多个窗口进行操作。
其实后台功能用VC来解释就是,通过获取窗口的句柄(就先简单理解为每个窗口都有一个唯一的编号)。
然后绑定此窗口,相关的操作都是针对于这个编号的窗口进行的,从而不会在其他窗口有鼠标和键盘无法使用的问题。
二窗口绑定窗口绑定在大漠里是通过两个函数来实现的。
对了,这个就是大漠开发包里的那个开发手册。
第一个是普通的绑定。
第二个是高级的绑定函数,参数更多,可以设置的功能也更多一些。
具体使用中根据自己需求看手册里这里的介绍很多,刚才试着贴了一下,太多了就不贴了。
需要了自己看。
现在我们就用最通用最简单的来绑定一个窗口示例:// display: 前台鼠标:前台键盘:前台模式0dm_ret = dm.BindWindow(hwnd,"normal","normal","normal",0)// display: gdi 鼠标:前台键盘:前台模式1dm_ret = dm.BindWindow(hwnd,"gdi","normal","normal",1)// display: dx 鼠标:前台键盘:前台模式0dm_ret = dm.BindWindow(hwnd,"dx","normal","normal",0)// display: dx 鼠标:windows后台键盘:windows后台模式1dm_ret = dm.BindWindow(hwnd,"dx","windows","windows",1)// display: dx 鼠标:dx 后台键盘: dx后台模式1dm_ret = dm.BindWindow(hwnd,"dx","dx","dx",1)// display: dx 鼠标:windows3后台键盘:windows后台模式1 dm_ret = dm.BindWindow(hwnd,"dx","windows3","windows",1) mode 整形数: 模式。
c#免注册调用大漠插件
byte[] s = Resource1.omcj;
x.Write(s, 0, s.Length);
}
}
if (!File.Exists("omjk.dll"))
{
public Form1()
{
InitializeComponent();
}
[DllImport("omjk.dll", EntryPoint = "SetDllPathA")] //必需的代码
public static extern int SetDllPathA(string path, int mode); //必需的代码
// 定义一个全局dm对象保持
public static dmsoft dm_dm;
Application.Exit();
}
}
}
}
//创建对象
dm_dm = new dmsoft();//主线程对象创建一次就可以了 ,不然再次创建的就是子线程对象了
//判断版本 这儿是为了防止目录下被防止其他版本造成后续的异常错误
if (dm_dm.Ver() != "7.1904")
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace 大漠免注册7._1904版本
{
public partial class Form1 : Form
* 别处下载的鬼知道里面会不会缺斤少两的。我就是在这儿吃亏的 常!!!!
大漠杀蓝
大漠杀蓝矩阵”为大雨彩票网版主大漠先生所首创,此法在一些网站和彩友中流传,此杀法一般可杀去4个蓝号,准确率约在百分之八十,不失为一种好的杀蓝方法。
此法原来只有顺杀法一种,我在使用中,增加了逆杀法,由原来的杀四号,扩展到可以杀去8个蓝号。
还对其出错的情况进行了分析研究,找到了一些应对的办法,使得准确率也有了提高。
写到了下面的技术要领中。
现经整理介绍给广大彩友分享。
希望能对朋友们有所帮助。
(一)大漠杀蓝矩阵:此法需有一个杀蓝矩阵。
即把双色球的16个蓝号分成01 05 09 13、02 06 10 14、03 07 11 15、04 08 12 16四组,把它们分别放入下面的矩阵中:|01 05|02 06|03 07|04 08||09 13|10 14|11 15|12 16|本矩阵的特点是:每个矩阵单元有四个号,这四个号排成两行两列。
整个矩阵有四个单元,每个单元的上下行组成了整个矩阵的上下行,整个矩阵共是两行八列。
我们可以把每个矩阵单元称作区,把每区上行的第一个数做为这个区的标识,如矩阵单元01 03 05 13上行的第一个数是01,我们就把这个单元标识为1区。
余者类推。
这样做是为了方便叙述和记忆,也符合大多数人的习惯。
(二)基本杀法:按上面的矩阵,根据前两期的蓝号来杀,从前第二期的蓝号数起,数到上期蓝号,再从上期蓝号继续往下数同样的数,数到哪个数,就把这个数所在区的四个数杀掉。
例如:04098期蓝号03,04099期蓝号02,求04100期蓝球杀号,此例就是杀去8个蓝号的例子,杀法为:1)顺时针杀:从02数经06到03为2数。
则再从03数2数,经07到04。
则杀04所在区的04 08 12 16四个数。
2)逆时针杀:从03经06数到02为2数,则再从02数2数,经05到01,则杀01所在区的01 05 09 13四个数。
上面共杀了01 05 09 13 04 08 12 16八个数。
而04100期蓝号实开15。
大漠易语言 例程
大漠易语言例程
在易语言中调用大漠插件的步骤如下:
1. 注册COM组件:在使用大漠插件之前,需要先注册COM组件。
可以通过手动注册或者使用易语言提供的工具进行注册。
2. 创建大漠对象:在易语言中,需要创建一个大漠对象,可以通过易语言的对象库进行创建。
3. 初始化大漠插件:在创建了大漠对象之后,需要对大漠插件进行初始化操作。
4. 调用大漠插件的方法:在初始化大漠插件之后,就可以调用大漠插件的方法了。
5. 释放资源:使用完大漠插件之后,需要释放资源,包括关闭大漠对象和卸载大漠插件。
具体实现可以根据具体的例程进行操作,可以在易语言论坛上寻找相关的例程和教程。
C#调用大漠插件
C#调⽤⼤漠插件⼤漠插件是⼀个很不错的东西,在按键精灵和易语⾔⾥⾯⽤得很多,可以后台找图找字,写游戏⾃动脚本⽤得特别多。
前⾯写⼀个微信的⾃动脚本,查了⼀些资料,易语⾔不太熟悉,按键精灵功能上可能不好实现,就找了些资料,⼤漠插件是可以⽤⼀、引⽤Ddm.dll.NET⾥⾯可以直接引⽤,引⽤⽅法,添加引⽤--COM--找到DM,双击即可⼆、注册⼤漠插件//这是注册DLL到系统的⼀个⽅法,注册⼤漠则调⽤ AutoRegCom("regsvr32 -s dm.dll");static string AutoRegCom(string strCmd){string rInfo;try{Process myProcess = new Process();ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("cmd.exe");eShellExecute = false;myProcessStartInfo.CreateNoWindow = true;myProcessStartInfo.RedirectStandardOutput = true;myProcess.StartInfo = myProcessStartInfo;myProcessStartInfo.Arguments = "/c " + strCmd;myProcess.Start();StreamReader myStreamReader = myProcess.StandardOutput;rInfo = myStreamReader.ReadToEnd();myProcess.Close();rInfo = strCmd + "\r\n" + rInfo;return rInfo;}catch (Exception ex){return ex.Message;}}三、实例化⼤漠对象Dm.dmsoft dm = new Dm.dmsoft();四、调⽤⼤漠的⽅法直接通过实例化的对象dm调⽤,如dm.MoveTo(30, 30);完整代码:窗体上放⼀个按钮,点击按钮,调⽤⼤漠插件将⿏标移动到(30,30)using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Diagnostics;using System.IO;namespace Player{public partial class Player : Form{public Player(){InitializeComponent();AutoRegCom("regsvr32 -s dm.dll");}private void button1_Click(object sender, EventArgs e){Dm.dmsoft dm = new Dm.dmsoft();dm.MoveTo(30, 30);}static string AutoRegCom(string strCmd){string rInfo;try{Process myProcess = new Process();ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("cmd.exe");eShellExecute = false;myProcessStartInfo.CreateNoWindow = true;myProcessStartInfo.RedirectStandardOutput = true;myProcess.StartInfo = myProcessStartInfo;myProcessStartInfo.Arguments = "/c " + strCmd;myProcess.Start();StreamReader myStreamReader = myProcess.StandardOutput;rInfo = myStreamReader.ReadToEnd();myProcess.Close();rInfo = strCmd + "\r\n" + rInfo;return rInfo;}catch (Exception ex){return ex.Message;}}}}。
VC大漠实例
VC大漠实例MFC VC++ (VS2010) 调用大漠插件实例小工具源代码:隐藏鼠标指定的窗口,显示时要求输入密码:119 MiniTool.cpp 部分:// MiniTool.cpp : 定义应用程序的类行为。
//#include "stdafx.h"#include "MiniT ool.h"#include "MiniT oolDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// CMiniToolAppBEGIN_MESSAGE_MAP(CMiniT oolApp, CWinApp) ON_COMMAND(ID_HELP, &CWinApp::OnHelp) END_MESSAGE_MAP()// CMiniToolApp 构造CMiniToolApp::CMiniToolApp(){// TODO: 在此处添加构造代码,// 将所有重要的初始化放置在InitInstance 中}// 唯一的一个CMiniToolApp 对象CMiniToolApp theApp;// CMiniToolApp 初始化BOOL CMiniToolApp::InitInstance(){// 如果一个运行在Windows XP 上的应用程序清单指定要// 使用ComCtl32.dll 版本6 或更高版本来启用可视化方式,//则需要InitCommonControlsEx()。
否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;InitCtrls.dwSize = sizeof(InitCtrls);// 将它设置为包括所有要在应用程序中使用的// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;InitCommonControlsEx(&InitCtrls);CWinApp::InitInstance();AfxEnableControlContainer();// 标准初始化// 如果未使用这些功能并希望减小// 最终可执行文件的大小,则应移除下列// 不需要的特定初始化例程// 更改用于存储设置的注册表项// TODO: 应适当修改该字符串,// 例如修改为公司或组织名SetRegistryKey(_T("MiniTool by liuh"));WinExec("regsvr32.exe dm.dll /s",SW_SHOW);//注册dm.dll,如果dm.dll为当前程序目录相对路径,则直接写dm.dll即可。
大漠插件后台找图
磨了一下午终于找图成功了。
本人使用按键精灵。
第一步:下载大漠插件、解压,运行“注册大漠插件到系统.bat”,把全部东东都复制到按键精灵的plugin目录下吧~第二步:创建一个文件夹,以c:\test 为例。
把你要找的图(1.bmp)、大漠插件里的dm.dll 和RegDll.dll复制到这个文件夹。
第三步:打开按键精灵,创建一个新脚本。
往附件(在软件左边框选项)里面添加dm.dll、Reg.dll和图1.bmp第四步:脚本中加入如下语句PutAttachment "c:\test", "*.*" //意思是释放所有附件到c:\test目录。
就是把有用的文件打包到test目录下PutAttachment ".\Plugin", "RegDll.dll" //意思是释放RegDll.dll文件到按键精灵安装目录的Plugin目录下,用来完成大漠插件的注册Call Plugin.RegDll.Reg("c:\test\dm.dll") //这句忘了啥意思了,应该是呼唤大漠插件到按键精灵里来吧~Set dm = createobject("dm.dmsoft") //用大漠插件创建一个对象dmdm_ret = dm.SetPath("c:\test") // 设置全局路径,以后你找图用的图片都默认是test 目录里的图片了,否则你要用绝对路径c:\test\1.bmp来该表示图片dm_ret = dm.LoadPic("*.bmp") // 字面意思是加载test目录下的所有图片Hwnd = dm.GetMousePointWindow() // 用大漠软件获得鼠标指向窗口的句柄,保存在Hwnd 里Call Plugin.Window.Move(Hwnd, 0, 0) // 这句没搞懂。
大漠插件绑定窗口原理
大漠插件绑定窗口原理一、背景介绍大漠插件是一款常用的Windows自动化工具,可以实现鼠标键盘的模拟操作、窗口识别、图像识别等功能。
在使用大漠插件时,我们需要将其与目标窗口进行绑定,以便对该窗口进行操作。
本文将介绍大漠插件绑定窗口的原理。
二、大漠插件基本原理大漠插件基于Windows API实现,可以通过调用Windows API来实现鼠标键盘模拟操作、窗口识别等功能。
在使用大漠插件时,我们需要先创建一个对象,并使用该对象调用相应的方法来实现所需功能。
三、窗口句柄在Windows系统中,每个窗口都有一个唯一的句柄(handle),可以通过这个句柄来对该窗口进行操作。
在使用大漠插件时,我们需要获取目标窗口的句柄,并将其与大漠插件进行绑定。
四、获取窗口句柄获取目标窗口的句柄有多种方法,其中比较常用的方法有以下几种:1. 使用FindWindow函数FindWindow函数可以根据窗口类名和窗口标题来查找符合条件的第一个顶级窗口,并返回其句柄。
具体使用方法如下:HWND hwnd = FindWindow(NULL, "窗口标题");其中,第一个参数为窗口类名(如果不指定,则表示查找所有顶级窗口),第二个参数为窗口标题。
2. 使用FindWindowEx函数FindWindowEx函数可以在指定的父窗口下查找符合条件的子窗口,并返回其句柄。
具体使用方法如下:HWND hwndParent = FindWindow(NULL, "父窗口标题"); HWND hwndChild = FindWindowEx(hwndParent, NULL, "子窗口类名", "子窗口标题");其中,第一个参数为父窗口句柄,第二个参数为子窗口句柄(如果不指定,则表示查找所有子窗口),第三个参数为子窗口类名,第四个参数为子窗口标题。
3. 使用EnumWindows函数EnumWindows函数可以枚举系统中所有顶级窗口,并对每个顶级窗口调用一个回调函数进行处理。
大漠类库使用方法
大漠类库使用方法
大漠类库的使用方法可以参考以下步骤:
1. 生成E语言类库:使用大漠类库生成工具生成E语言类库,将生成的类库保存到指定文件夹。
2. 封装大漠插件:将大漠插件封装到易语言模块中,以便在易语言中使用大漠插件的功能。
3. 创建大漠类库:在易语言中新建一个类库,命名为大漠类,并公开该类库。
4. 添加obj字段:在大漠类中新增一个obj字段,用于存储对象类型。
5. 保存大漠类库:将大漠类库保存为易语言模块文件(.dll或.exe文件)。
以上是大漠类库的基本使用方法,具体操作步骤可能会根据不同版本的大漠类库和易语言有所不同。
建议查阅大漠类库的官方文档或相关教程,以获取更详细和准确的信息。
大漠插件系统
⼤漠插件系统命令名称:dmBeep命令功能:蜂鸣器.f 整形数: 频率duration 整形数: 时长(ms).整形数:0 : 失败1 : 成功命令名称:CheckFontSmooth命令功能:检测当前系统是否有开启屏幕字体平滑.<收费功能>整形数:0 : 系统没开启平滑字体.1 : 系统有开启平滑字体.if Plugin.dm.CheckFontSmooth () = 1 thenTracePrint "当前系统有开启平滑字体"end if命令名称:CheckUAC命令功能:检测当前系统是否有开启UAC(⽤户账户控制).整形数:0 : 没开启UAC1 : 开启了UACif Plugin.dm.CheckUAC() = 1 thenTracePrint "当前系统开启了⽤户账户控制"end if注: 只有WIN7 VISTA WIN2008以及以上系统才有UAC设置命令名称:dmDelay命令功能:延时指定的毫秒,过程中不阻塞UI 操作.⼀般⾼级语⾔使⽤.按键⽤不到. <收费整形数:0 : 失败1 : 成功Plugin.dm.dmDelay 1000注: 由于是com组件,调⽤此函数必须保证调⽤线程的模型为STA.否则此函数会阻塞当前线程UI.命令名称:DisableFontSmooth命令功能:关闭当前系统屏幕字体平滑.同时关闭系统的ClearType 功能. <收费功能>整形数:0 : 失败1 : 成功if Plugin.dm.CheckFontSmooth() = 1 thenif Plugin.dm.DisableFontSmooth() = 1 thenMessageBox "关闭了当前系统平滑字体,重启⽣效"Plugin.dm.ExitOs 2Delay 2000EndScriptPlugin.dm.dmBeep 1000,1000mis整形数: 毫秒数.脚本例⼦:命令参数:返回值:脚本例⼦:返回值:脚本例⼦:命令参数:返回值:脚本例⼦:返回值:脚本例⼦:返回值:end ifend if注: 关闭之后要让系统⽣效,必须重启系统才有效.命令名称:DisablePowerSave命令功能:关闭电源管理,不会进⼊睡眠.整形数:0 : 失败1 : 成功Plugin.dm.DisablePowerSave注 :此函数调⽤以后,并不会更改系统电源设置.此函数经常⽤在后台操作过程中. 避免被系统⼲扰.命令名称:DisableScreenSave命令功能:关闭屏幕保护.整形数:0 : 失败1 : 成功Plugin.dm.DisableScreenSave注 : 调⽤此函数后,可能在系统中还是看到屏保是开启状态。
大漠各个插件说明[指南]
大漠各个插件说明[指南]大漠各个插件说明1. 无返回值的不能带括号 ,或者说无括号不能带返回值,例如dm.FindStr 0,0,2000,2000,"长安","aaaaa-00000",1.0,intX,intYdm.MoveTo intX,intYdm.LeftClickdm.SetPath "c:\xxxx"dm.SetDict 0,"test.txt"dm.LoadPic "*.bmp"等等,这些都是不需要返回值的,那么不需要加括号,当然,你也可以加括号,但是就必须遵循规则22.有返回值的必须带括号,或者说,有括号必须有返回值,例如dm_ret = dm.FindStr(0,0,2000,2000,"长安","aaaaa-00000",1.0,intX,intY)dm_ret = dm.MoveTo(intX,intY)m_ret = dm.LeftClick()ddm_ret = dm.SetPath("c:\xxxx")dm_ret = dm.SetDict(0,"test.txt") dm_ret = dm.LoadPic("*.bmp") 有些函数,是必须有返回值的,那么就必须带括号,比如Ocr函数等ss = dm.Ocr(0,0,2000,2000,"aaaaaa-000000",1.0)4按键多线程调用插件目前来讲,按键的多线程还不够成熟。
尽量少用。
以下是在按键下使用多线程调用插件的一个示例.// 注册部分我就省略了Dim hwndSet dm = createobject("dm.dmsoft") TracePrint dm.Ver()// 主绑定(当然你也可以不要主绑定。
易语言调用大漠
还有一小时下班,没事做,教童鞋们在易裡用大漠插件,嘿嘿,好多童鞋都不会怎么用,回答也累啊,没办法,普及一下咯,看图!第一步,下载大漠,必须的!第二步,注册DLL文件,必须的,很多种方法!这是大漠自带的,很好用,注册的时候一定要dm.dll, regdll.dll, 注册大漠插件到系统.bat ,这三个文件一定要在同一个目录下,很多童鞋就知道,以为只有注册大漠插件到系统.bat 点击就行了,好用的插件也有让人蛋疼的地方,要留意!用regsvr32来注册,开始菜单,运行!Regsvr32是命令,后面的是你的DLL的文件路径,这个路径里一定要有这个DLL文件,不然当然是不行滴咯!重点来了,打开易语言点工具菜单的类型库或OCX组件-支持库,打开就懂了,0.0在弹出的对话框中选注册类型库找到dm.dll然后打开,会有个提示好咧,到这里易语言还是没有大漠支持库了,往下看找到Dm 版本1.0,然后单击下一步其实这是易官方的一个只有几分钟的教程,很多同学就是不愿意去看,哎,伸手党太多了!点击保存为NPK文件 ,再将NPK文件放到易程序目录的LIB文件夹里,然后配置支持库!如果要汉化,那你就一个一个函数的汉化呸,当然,很累的,但为了童鞋们,我也是汉化了一个啊,看我论坛的帖子咯支持库有了哈哈,问题又来了,很多童鞋就说了,这个怎么用啊,很明显是易的基础都没打好的童鞋,郁闷!创建一个窗口程序,插入一个变量,这个变量的数据类型我们打上大漠插件,注意,这裡是你保存NPK 文件的时候写的是啥就是啥,不一定是大漠插件这个数据类型的,我写的是大漠插件,所以数据类型也是大漠插件! 看下图这里,懂点易的就飘过吧,这里是普及教程!好了,这下可以用了,参数自己看大漠接口说明填就是了!总结了一下,要注意的有以下几点!不是所有的函数易都可以调用,比如某些函数易是用不了的,大漠接口说明说得很清楚,这个要注意!还是有些问题,,,为啥在我的电脑上能用,发给别人用不了我写的软件呢?,简单解决办法如下:打开易语言,选择工具,中的系统配置,选择通过名称為“ _启动子程序”的子程序来启动!然后在 _启动子程序中写初始化代码:还有就是不管对方是否注册了大漠,都需将插件文本写到自己的程序目录下,我也不知道啥原因,有些机子程序目录下没插件文件在他就运行不了,额,有待研究哈,好了,有空再聊聊,就到这里啦!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MFC VC++ (VS2010) 调用大漠插件实例小工具源代码:隐藏鼠标指定的窗口,显示时要求输入密码:119MiniTool.cpp 部分:// MiniTool.cpp : 定义应用程序的类行为。
//#include "stdafx.h"#include "MiniTool.h"#include "MiniToolDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// CMiniToolAppBEGIN_MESSAGE_MAP(CMiniToolApp, CWinApp)ON_COMMAND(ID_HELP, &CWinApp::OnHelp)END_MESSAGE_MAP()// CMiniToolApp 构造CMiniToolApp::CMiniToolApp(){// TODO: 在此处添加构造代码,// 将所有重要的初始化放置在InitInstance 中}// 唯一的一个CMiniToolApp 对象CMiniToolApp theApp;// CMiniToolApp 初始化BOOL CMiniToolApp::InitInstance(){// 如果一个运行在Windows XP 上的应用程序清单指定要// 使用ComCtl32.dll 版本6 或更高版本来启用可视化方式,//则需要InitCommonControlsEx()。
否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;InitCtrls.dwSize = sizeof(InitCtrls);// 将它设置为包括所有要在应用程序中使用的// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;InitCommonControlsEx(&InitCtrls);CWinApp::InitInstance();AfxEnableControlContainer();// 标准初始化// 如果未使用这些功能并希望减小// 最终可执行文件的大小,则应移除下列// 不需要的特定初始化例程// 更改用于存储设置的注册表项// TODO: 应适当修改该字符串,// 例如修改为公司或组织名SetRegistryKey(_T("MiniTool by liuh"));WinExec("regsvr32.exe dm.dll /s",SW_SHOW);//注册dm.dll,如果dm.dll为当前程序目录相对路径,则直接写dm.dll即可。
CMiniToolDlg dlg;m_pMainWnd = &dlg;INT_PTR nResponse = dlg.DoModal();if (nResponse == IDOK){// TODO: 在此放置处理何时用// “确定”来关闭对话框的代码}else if (nResponse == IDCANCEL){// TODO: 在此放置处理何时用// “取消”来关闭对话框的代码}// 由于对话框已关闭,所以将返回FALSE 以便退出应用程序,// 而不是启动应用程序的消息泵。
return FALSE;}Dlg.cpp部分:// MiniToolDlg.cpp : 实现文件#include "stdafx.h"#include "MiniTool.h"#include "MiniToolDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 用于应用程序“关于”菜单项的CAboutDlg 对话框class CAboutDlg : public CDialog{public:CAboutDlg();// 对话框数据enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()// CMiniToolDlg 对话框CMiniToolDlg::CMiniToolDlg(CWnd* pParent /*=NULL*/): CDialog(CMiniToolDlg::IDD, pParent), MyWinHWND(0), passwd(0){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CMiniToolDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, passwd);}BEGIN_MESSAGE_MAP(CMiniToolDlg, CDialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()//}}AFX_MSG_MAPON_MESSAGE(WM_HOTKEY,MyHotKey)ON_WM_DESTROY()ON_BN_CLICKED(IDC_BUTTON1, &CMiniToolDlg::OnBnClickedButton1) END_MESSAGE_MAP()// CMiniToolDlg 消息处理程序BOOL CMiniToolDlg::OnInitDialog(){CDialog::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。
当应用程序主窗口不是对话框时,框架将自动// 执行此操作SetIcon(m_hIcon, TRUE); // 设置大图标SetIcon(m_hIcon, FALSE); // 设置小图标ShowWindow(SW_MINIMIZE);// TODO: 在此添加额外的初始化代码//z注册系统热键RegisterHotKey(m_hWnd,2036,NULL,36);//注册一个系统热键HOMERegisterHotKey(m_hWnd,2035,NULL,35);//注册一个系统热键ENDCoInitialize(NULL);CLSID clsid;HRESULT hr=CLSIDFromProgID(OLESTR("dm.dmsoft"),&clsid);//利用“根名称.类名”获取CLSID,&就是把指针给函数,也就是传址。
dm.CreateDispatch(clsid);//从注册表中获取到dll路径,到这里就调用成功了。
TRACE((CString)"dm.Ver="+(CString)dm.Ver()+(CString)"\n");return TRUE; // 除非将焦点设置到控件,否则返回TRUE}void CMiniToolDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// 如果向对话框添加最小化按钮,则需要下面的代码// 来绘制该图标。
对于使用文档/视图模型的MFC 应用程序,// 这将由框架自动完成。
void CMiniToolDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND,reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}//当用户拖动最小化窗口时系统调用此函数取得光标//显示。
HCURSOR CMiniToolDlg::OnQueryDragIcon(){return static_cast<HCURSOR>(m_hIcon);}// 热键响应函数LRESULT CMiniToolDlg::MyHotKey(WPARAM wParam, LPARAM lParam) {if(2036==wParam){TRACE((CString)"dm.Ver="+(CString)dm.Ver()+(CString)"\n");MyWinHWND = dm.GetMousePointWindow();TRACE("获取到的窗口句柄:%x \n",MyWinHWND);long dm_ret =dm.SetWindowState(MyWinHWND,6);//大漠隐藏窗口// if(MessageBox("全局热键HOME被激活","热键提示",MB_ICONQUESTION|MB_OKCANCEL )==IDOK)//MessageBox((CString)"HOME");this->ShowWindow(false);};if(2035==wParam){TRACE("热键END激活,执行窗口激活\n");//if(MessageBox("全局热键END被激活","热键提示",MB_ICONQUESTION|MB_OKCANCEL )==IDOK)//MessageBox((CString)"END");this->ShowWindow(true);TRACE("热键END程序块退出\n");};return LRESULT();}void CMiniToolDlg::OnDestroy(){CDialog::OnDestroy();// TODO: 在此处添加消息处理程序代码UnregisterHotKey(m_hWnd,2036);UnregisterHotKey(m_hWnd,2035);}void CMiniToolDlg::OnBnClickedButton1(){UpdateData(TRUE);if(119==passwd) long dm_ret =dm.SetWindowState(MyWinHWND,7);//大漠7 : 显示指定窗口TRACE("密码输入错误");// TODO: 在此添加控件通知处理程序代码}。