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可视化编程实例-回复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++配合大漠插件实现的消息泵模式按键模拟编程

开源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是其中的一种功能,主要用于查找图片。

使用大漠插件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高的问题..

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群成员信息

批量提取整理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 整形数: 模式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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: 在此添加控件通知处理程序代码}。

相关文档
最新文档