[编程代码] 教你零基础一句代码制作自己的工具箱

8958 4
小菜鸟一枚 2021-10-4 20:43:52 | 显示全部楼层 |阅读模式
本帖最后由 小菜鸟一枚 于 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.重复上面步骤,就可以完成工具箱的打造了。
  1. //计算器
  2. void CMFC_MyToolDlg::OnBnClickedButton1()
  3. {
  4.     // TODO: 在此添加控件通知处理程序代码
  5.     ShellExecute(NULL, "open", "calc", "","", SW_SHOWNORMAL);
  6. }

  7. //画图
  8. void CMFC_MyToolDlg::OnBnClickedButton5()
  9. {
  10.     // TODO: 在此添加控件通知处理程序代码
  11.     ShellExecute(NULL, "open", "mspaint", "", "", SW_SHOWNORMAL);
  12. }

  13. //截图工具
  14. void CMFC_MyToolDlg::OnBnClickedButton9()
  15. {
  16.     // TODO: 在此添加控件通知处理程序代码
  17.     ShellExecute(NULL, "open", TEXT("snippingTool"), "", "", SW_SHOWNORMAL);
  18. }

  19. //记事本
  20. void CMFC_MyToolDlg::OnBnClickedButton13()
  21. {
  22.     // TODO: 在此添加控件通知处理程序代码
  23.     ShellExecute(NULL, "open", "notepad", "", "", SW_SHOWNORMAL);
  24. }

  25. //系统配置
  26. void CMFC_MyToolDlg::OnBnClickedButton2()
  27. {
  28.     // TODO: 在此添加控件通知处理程序代码
  29.     ShellExecute(NULL, "open", "msconfig", "", NULL, SW_SHOWNORMAL);
  30. }

  31. //屏幕键盘
  32. void CMFC_MyToolDlg::OnBnClickedButton6()
  33. {
  34.     // TODO: 在此添加控件通知处理程序代码
  35.     ShellExecute(NULL, "open", "osk", "", "", SW_SHOWNORMAL);
  36. }

  37. //注册表编辑
  38. void CMFC_MyToolDlg::OnBnClickedButton10()
  39. {
  40.     // TODO: 在此添加控件通知处理程序代码
  41.     ShellExecute(NULL, "open", "regedit", "", "", SW_SHOWNORMAL);
  42. }

  43. //DirectX 诊断
  44. void CMFC_MyToolDlg::OnBnClickedButton14()
  45. {
  46.     // TODO: 在此添加控件通知处理程序代码
  47.     ShellExecute(NULL, "open", "dxdiag", "", "", SW_SHOWNORMAL);
  48. }

  49. //组策略
  50. void CMFC_MyToolDlg::OnBnClickedButton3()
  51. {
  52.     // TODO: 在此添加控件通知处理程序代码
  53.     ShellExecute(NULL, "open", "gpedit.msc", "", "", SW_SHOWNORMAL);
  54. }

  55. //资源监视器
  56. void CMFC_MyToolDlg::OnBnClickedButton7()
  57. {
  58.     // TODO: 在此添加控件通知处理程序代码
  59.     ShellExecute(NULL, "open", "perfmon.msc", "", "", SW_SHOWNORMAL);
  60. }

  61. //任务管理器
  62. void CMFC_MyToolDlg::OnBnClickedButton11()
  63. {
  64.     // TODO: 在此添加控件通知处理程序代码
  65.     ShellExecute(NULL, "open", "taskmgr", "", "", SW_SHOWNORMAL);
  66. }

  67. //事件查看器
  68. void CMFC_MyToolDlg::OnBnClickedButton15()
  69. {
  70.     // TODO: 在此添加控件通知处理程序代码
  71.     ShellExecute(NULL, "open", "eventvwr.msc", "", "", SW_SHOWNORMAL);
  72. }

  73. //吾爱论坛
  74. void CMFC_MyToolDlg::OnBnClickedButton4()
  75. {
  76.     // TODO: 在此添加控件通知处理程序代码
  77.     ShellExecute(NULL, "open", "iexplore", "www.52pojie.cn", "", SW_SHOWNORMAL);
  78. }

  79. //看雪论坛
  80. void CMFC_MyToolDlg::OnBnClickedButton8()
  81. {
  82.     // TODO: 在此添加控件通知处理程序代码
  83.     ShellExecute(NULL, "open", "iexplore", "www.pediy.com", "", SW_SHOWNORMAL);
  84. }

  85. //吾爱OD
  86. void CMFC_MyToolDlg::OnBnClickedButton12()
  87. {
  88.     // TODO: 在此添加控件通知处理程序代码
  89.     ShellExecute(NULL, "open", "D:/Crack Tool/吾爱破解专用版Ollydbg/吾爱破解[LCG].exe", "", "", SW_SHOWNORMAL);
  90. }

  91. //X64 dbg
  92. void CMFC_MyToolDlg::OnBnClickedButton16()
  93. {
  94.     // TODO: 在此添加控件通知处理程序代码
  95.     ShellExecute(NULL, "open", "D:/Crack Tool/x64dbg_2021_07_01/release/x64/x64dbg", "", "", SW_SHOWNORMAL);
  96. }
复制代码

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.按钮事件最终源码:

  1. //计算器
  2. void CMFC_MyToolDlg::OnBnClickedButton1()
  3. {
  4.     // TODO: 在此添加控件通知处理程序代码
  5.     ShellExecute(NULL, TEXT("open"), TEXT("calc"), NULL,NULL, SW_SHOWNORMAL);
  6. }

  7. //画图
  8. void CMFC_MyToolDlg::OnBnClickedButton5()
  9. {
  10.     // TODO: 在此添加控件通知处理程序代码
  11.     ShellExecute(NULL, TEXT("open"), TEXT("mspaint"), NULL, NULL, SW_SHOWNORMAL);
  12. }

  13. //截图工具
  14. void CMFC_MyToolDlg::OnBnClickedButton9()
  15. {
  16.     // TODO: 在此添加控件通知处理程序代码
  17.     ShellExecute(NULL, TEXT("open"), TEXT("SnippingTool"), NULL, NULL, SW_SHOWNORMAL);
  18. }

  19. //记事本
  20. void CMFC_MyToolDlg::OnBnClickedButton13()
  21. {
  22.     // TODO: 在此添加控件通知处理程序代码
  23.     ShellExecute(NULL, TEXT("open"), TEXT("notepad"), NULL, NULL, SW_SHOWNORMAL);
  24. }

  25. //系统配置
  26. void CMFC_MyToolDlg::OnBnClickedButton2()
  27. {
  28.     // TODO: 在此添加控件通知处理程序代码
  29.     ShellExecute(NULL, TEXT("open"), TEXT("msconfig"), NULL, NULL, SW_SHOWNORMAL);
  30. }

  31. //屏幕键盘
  32. void CMFC_MyToolDlg::OnBnClickedButton6()
  33. {
  34.     // TODO: 在此添加控件通知处理程序代码
  35.     ShellExecute(NULL, TEXT("open"), TEXT("osk"), NULL, NULL, SW_SHOWNORMAL);
  36. }

  37. //注册表编辑
  38. void CMFC_MyToolDlg::OnBnClickedButton10()
  39. {
  40.     // TODO: 在此添加控件通知处理程序代码
  41.     ShellExecute(NULL, TEXT("open"), TEXT("regedit"), NULL, NULL, SW_SHOWNORMAL);
  42. }

  43. //DirectX 诊断
  44. void CMFC_MyToolDlg::OnBnClickedButton14()
  45. {
  46.     // TODO: 在此添加控件通知处理程序代码
  47.     ShellExecute(NULL, TEXT("open"), TEXT("dxdiag"), NULL, NULL, SW_SHOWNORMAL);
  48. }

  49. //组策略
  50. void CMFC_MyToolDlg::OnBnClickedButton3()
  51. {
  52.     // TODO: 在此添加控件通知处理程序代码
  53.     ShellExecute(NULL, TEXT("open"), TEXT("gpedit.msc"), NULL, NULL, SW_SHOWNORMAL);
  54. }

  55. //资源监视器
  56. void CMFC_MyToolDlg::OnBnClickedButton7()
  57. {
  58.     // TODO: 在此添加控件通知处理程序代码
  59.     ShellExecute(NULL, TEXT("open"), TEXT("perfmon.msc"), NULL, NULL, SW_SHOWNORMAL);
  60. }

  61. //任务管理器
  62. void CMFC_MyToolDlg::OnBnClickedButton11()
  63. {
  64.     // TODO: 在此添加控件通知处理程序代码
  65.     ShellExecute(NULL, TEXT("open"), TEXT("taskmgr"), NULL, NULL, SW_SHOWNORMAL);
  66. }

  67. //事件查看器
  68. void CMFC_MyToolDlg::OnBnClickedButton15()
  69. {
  70.     // TODO: 在此添加控件通知处理程序代码
  71.     ShellExecute(NULL, TEXT("open"), TEXT("eventvwr.msc"), NULL, NULL, SW_SHOWNORMAL);
  72. }

  73. //吾爱论坛
  74. void CMFC_MyToolDlg::OnBnClickedButton4()
  75. {
  76.     // TODO: 在此添加控件通知处理程序代码
  77.     ShellExecute(NULL, TEXT("open"), TEXT("iexplore"), TEXT("www.52pojie.cn"), NULL, SW_SHOWNORMAL);
  78. }

  79. //看雪论坛
  80. void CMFC_MyToolDlg::OnBnClickedButton8()
  81. {
  82.     // TODO: 在此添加控件通知处理程序代码
  83.     ShellExecute(NULL, TEXT("open"), TEXT("iexplore"), TEXT("www.pediy.com"), NULL, SW_SHOWNORMAL);
  84. }

  85. //吾爱OD
  86. void CMFC_MyToolDlg::OnBnClickedButton12()
  87. {
  88.     // TODO: 在此添加控件通知处理程序代码
  89.     ShellExecute(NULL, TEXT("open"), TEXT("D:/Crack Tool/吾爱破解专用版Ollydbg/吾爱破解[LCG].exe"), NULL, NULL, SW_SHOWNORMAL);
  90. }

  91. //X64 dbg
  92. void CMFC_MyToolDlg::OnBnClickedButton16()
  93. {
  94.     // TODO: 在此添加控件通知处理程序代码
  95.     ShellExecute(NULL, TEXT("open"), TEXT("D:/Crack Tool/x64dbg_2021_07_01/release/x64/x64dbg"),  NULL, NULL, SW_SHOWNORMAL);
  96. }
复制代码

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
小远实名认证 2021-10-5 12:52:48 来自手机 | 显示全部楼层
图片咋变形了

点评

上次官方群不是还给你艾特了,让你完善功能,添加远程图片插件吗?王子说只支持本地上传,我用的是图床。  详情 回复 发表于 2021-10-5 18:45
小菜鸟一枚 2021-10-5 18:45:50 | 显示全部楼层

上次官方群不是还给你艾特了,让你完善功能,添加远程图片插件吗?王子说只支持本地上传,我用的是图床。
五云包子 2022-4-16 09:41:05 | 显示全部楼层
C++?刚好我在学
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行