本帖最后由 小菜鸟一枚 于 2021-10-4 20:48 编辑
0x1 创建一个默认的MFC程序  1.第一步新建MFC项目
   2.点下一步,选择基于对话框,同时选择在静态库中使用MFC,这是生成代码时打包静态库,方便其他电脑上运行。
   3.选择主框架样式,修改程序的标题,直接点完成项目就被创建好了。
   4.打开资源文件,del删除里面的内容。
 0x2 添加工具  1.视图-工具箱,添加一个button,单击,修改caption为计算机:
   2.双击进去,看到: 复制代码 隐藏代码
void CMFC_MyToolDlg::OnBnClickedButton1(){ // TODO: 在此添加控件通知处理程序代码}   3.添加inExec("calc.exe", SW_SHOWNORMAL);代码,保存,生成程序,点击计算器,成功打开了计算器。
   4.重复上面步骤,就可以完成工具箱的打造了。 - //计算器
- void CMFC_MyToolDlg::OnBnClickedButton1()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", "calc", "","", SW_SHOWNORMAL);
- }
- //画图
- void CMFC_MyToolDlg::OnBnClickedButton5()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", "mspaint", "", "", SW_SHOWNORMAL);
- }
- //截图工具
- void CMFC_MyToolDlg::OnBnClickedButton9()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", TEXT("snippingTool"), "", "", SW_SHOWNORMAL);
- }
- //记事本
- void CMFC_MyToolDlg::OnBnClickedButton13()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", "notepad", "", "", SW_SHOWNORMAL);
- }
- //系统配置
- void CMFC_MyToolDlg::OnBnClickedButton2()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", "msconfig", "", NULL, SW_SHOWNORMAL);
- }
- //屏幕键盘
- void CMFC_MyToolDlg::OnBnClickedButton6()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", "osk", "", "", SW_SHOWNORMAL);
- }
- //注册表编辑
- void CMFC_MyToolDlg::OnBnClickedButton10()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", "regedit", "", "", SW_SHOWNORMAL);
- }
- //DirectX 诊断
- void CMFC_MyToolDlg::OnBnClickedButton14()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", "dxdiag", "", "", SW_SHOWNORMAL);
- }
- //组策略
- void CMFC_MyToolDlg::OnBnClickedButton3()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", "gpedit.msc", "", "", SW_SHOWNORMAL);
- }
- //资源监视器
- void CMFC_MyToolDlg::OnBnClickedButton7()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", "perfmon.msc", "", "", SW_SHOWNORMAL);
- }
- //任务管理器
- void CMFC_MyToolDlg::OnBnClickedButton11()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", "taskmgr", "", "", SW_SHOWNORMAL);
- }
- //事件查看器
- void CMFC_MyToolDlg::OnBnClickedButton15()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", "eventvwr.msc", "", "", SW_SHOWNORMAL);
- }
- //吾爱论坛
- void CMFC_MyToolDlg::OnBnClickedButton4()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", "iexplore", "www.52pojie.cn", "", SW_SHOWNORMAL);
- }
- //看雪论坛
- void CMFC_MyToolDlg::OnBnClickedButton8()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", "iexplore", "www.pediy.com", "", SW_SHOWNORMAL);
- }
- //吾爱OD
- void CMFC_MyToolDlg::OnBnClickedButton12()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", "D:/Crack Tool/吾爱破解专用版Ollydbg/吾爱破解[LCG].exe", "", "", SW_SHOWNORMAL);
- }
- //X64 dbg
- void CMFC_MyToolDlg::OnBnClickedButton16()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, "open", "D:/Crack Tool/x64dbg_2021_07_01/release/x64/x64dbg", "", "", SW_SHOWNORMAL);
- }
复制代码
 0x3 程序调试  1.小菜鸟看着自己的工具箱,感觉自己好厉害,来,试试,点击截图工具,没反应???
逐个点击一遍:
截图工具
系统配置
翻车了,点击无效,没有反应。   2.看一看百度上对这个函数的说明:
返回的HINSTANCE可以将它转换为一个整数(%d),并比较它的值大于还是小于32或比较它的错误代码
返回值大于32表示执行成功
返回值小于32表示执行错误 复制代码 隐藏代码
以截图工具为例,修改代码: int i = ( int) ShellExecute( NULL, "open", TEXT( "snippingTool"), "", "", SW_SHOWNORMAL); switch (i) { case 0: MessageBox( "内存不足", "错误"); break; case 2: MessageBox( "文件名错误", "错误"); break; case 3: MessageBox( "路径名错误", "错误"); break; case 11: MessageBox( "EXE 文件无效", "错误"); break; case 26: MessageBox( "发生共享错误", "错误"); break; case 27: MessageBox( "文件名不完全或无效", "错误"); break; case 28: MessageBox( "超时", "错误"); break; case 29: MessageBox( "DDE 事务失败", "错误"); break; case 30: MessageBox( "正在处理其他 DDE 事务而不能完成该 DDE 事务", "错误"); break; case 31: MessageBox( "没有相关联的应用程序", "错误"); break; default: MessageBox( "程序正常", "正确"); break; }   3.区区错误,也想欺负小菜鸟,看我case大法一出:

纳尼???文件名错误,在开始菜单试了又试,明明可以打开的啊???
   4.目前小菜鸟的编译模式是release x86,那么去SysWOW64目录下看看,居然没有截图工具,那我开始菜单的截图工具哪来的呢?C:\Windows\system32,好吧,我的系统是win7 64位的,64位的...,64位的,32位默认寻找SysWOW64这个目录去了。   5.代码生成模式改成release x64试试,傻眼了,一片红,c++字符串和window字符串不兼容,每一个包裹一下TEXT宏算了。 复制代码 隐藏代码
ShellExecute( NULL, TEXT( "open"), TEXT( "SnippingTool"), NULL, NULL, SW_SHOWNORMAL);   6.成功了,果然是操作系统的问题。
   7.按钮事件最终源码:
- //计算器
- void CMFC_MyToolDlg::OnBnClickedButton1()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("calc"), NULL,NULL, SW_SHOWNORMAL);
- }
- //画图
- void CMFC_MyToolDlg::OnBnClickedButton5()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("mspaint"), NULL, NULL, SW_SHOWNORMAL);
- }
- //截图工具
- void CMFC_MyToolDlg::OnBnClickedButton9()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("SnippingTool"), NULL, NULL, SW_SHOWNORMAL);
- }
- //记事本
- void CMFC_MyToolDlg::OnBnClickedButton13()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("notepad"), NULL, NULL, SW_SHOWNORMAL);
- }
- //系统配置
- void CMFC_MyToolDlg::OnBnClickedButton2()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("msconfig"), NULL, NULL, SW_SHOWNORMAL);
- }
- //屏幕键盘
- void CMFC_MyToolDlg::OnBnClickedButton6()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("osk"), NULL, NULL, SW_SHOWNORMAL);
- }
- //注册表编辑
- void CMFC_MyToolDlg::OnBnClickedButton10()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("regedit"), NULL, NULL, SW_SHOWNORMAL);
- }
- //DirectX 诊断
- void CMFC_MyToolDlg::OnBnClickedButton14()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("dxdiag"), NULL, NULL, SW_SHOWNORMAL);
- }
- //组策略
- void CMFC_MyToolDlg::OnBnClickedButton3()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("gpedit.msc"), NULL, NULL, SW_SHOWNORMAL);
- }
- //资源监视器
- void CMFC_MyToolDlg::OnBnClickedButton7()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("perfmon.msc"), NULL, NULL, SW_SHOWNORMAL);
- }
- //任务管理器
- void CMFC_MyToolDlg::OnBnClickedButton11()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("taskmgr"), NULL, NULL, SW_SHOWNORMAL);
- }
- //事件查看器
- void CMFC_MyToolDlg::OnBnClickedButton15()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("eventvwr.msc"), NULL, NULL, SW_SHOWNORMAL);
- }
- //吾爱论坛
- void CMFC_MyToolDlg::OnBnClickedButton4()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("iexplore"), TEXT("www.52pojie.cn"), NULL, SW_SHOWNORMAL);
- }
- //看雪论坛
- void CMFC_MyToolDlg::OnBnClickedButton8()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("iexplore"), TEXT("www.pediy.com"), NULL, SW_SHOWNORMAL);
- }
- //吾爱OD
- void CMFC_MyToolDlg::OnBnClickedButton12()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("D:/Crack Tool/吾爱破解专用版Ollydbg/吾爱破解[LCG].exe"), NULL, NULL, SW_SHOWNORMAL);
- }
- //X64 dbg
- void CMFC_MyToolDlg::OnBnClickedButton16()
- {
- // TODO: 在此添加控件通知处理程序代码
- ShellExecute(NULL, TEXT("open"), TEXT("D:/Crack Tool/x64dbg_2021_07_01/release/x64/x64dbg"), NULL, NULL, SW_SHOWNORMAL);
- }
复制代码
0x4 总结  1.新建MFC程序,选择基于对话框,选择在静态库中使用MFC,主框架选择粗框架带最大化和最小化框,还有菜单栏,修改对话框标题为小菜鸟的工具箱,高级功能全部不勾选,然后点完成。   2.点击MFC_MyTool.rc资源文件,切换到资源视图,del删掉里面的内容。   3.选择视图-工具箱,添加button按钮,在外观-caption中修改按钮上的文字。   4.双击按钮进入编辑界面,添加ShellExecute(NULL, TEXT("open"), TEXT("calc"), NULL, NULL, SW_SHOWNORMAL);,运行程序,点击按钮即可打开计算器。   5.重复上面步骤,就可以开发自己的工具箱,是不是很简单呢。   6.调试的时候走了一些弯路,我以为指定路径为system32就可以,后来才想到这个目录下的是64位程序,调用不了,最后才想到修改程序的生成模式。 0x5 参考资料  1.ShellExecute-百度百科   2.程序下载地址(编译环境,Visual Studio 2015 release x64,MFC静态链接):https://wwx.lanzoui.com/i4MkKut3pfc   3.源码下载地址:
链接:https://pan.baidu.com/s/1KgyaSuqQuXqoKtIW3IfWlQ
提取码:52pj |
点评
使用道具 举报
上次官方群不是还给你艾特了,让你完善功能,添加远程图片插件吗?王子说只支持本地上传,我用的是图床。
使用道具 举报
使用道具 举报