VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 350|回复: 13

[求助] 文件释放

[复制链接]
13_avatar_middle
在线会员 忧郁小男生 发表于 2018-9-12 00:39:30 | 显示全部楼层 |阅读模式
3驿站币
问题是这样的,我现在有30多个子文件

然后我想把它给写进一个exe,运行这个exe之后释放

这三十多个子文件到指定目录,请问需要怎么操作?





上一篇:minifilter与应用层通信问题
下一篇:关于解析数据结构的问题

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-9-12 09:53:55 | 显示全部楼层
将这些文件以资源的形式放到exe中,之后执行exe的时候释放出来就可以了,释放的过程详见:

求个把exe资源释放到指定路径的代码
http://www.cctry.com/thread-68150-1-1.html

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

13_avatar_middle
ico_lz  楼主| 忧郁小男生 发表于 2018-9-12 22:49:12 | 显示全部楼层
Syc 发表于 2018-9-12 09:53
将这些文件以资源的形式放到exe中,之后执行exe的时候释放出来就可以了,释放的过程详见:

求个把exe资 ...
  1. HCURSOR CExeDlg::OnQueryDragIcon()
  2. {
  3.         return (HCURSOR) m_hIcon;
  4. }

  5. void CExeDlg::OnButton1()
  6. {
  7.         // TODO: Add your control notification handler code here
  8.         if(ReleaseRes("Test.exe",(WORD)IDR_EXE1,"EXE"))
  9.                 MessageBox("释放文件成功!","提示",MB_OK);
  10.         else
  11.                 MessageBox("释放文件失败!","提示",MB_OK);
  12. }

  13. /************************************************************************/
  14. /* 函数说明:释放资源中某类型的文件                                    
  15. /* 参    数:新文件名、资源ID、资源类型                                 
  16. /* 返 回 值:成功返回TRUE,否则返回FALSE  
  17. /* By:Koma         2009.07.24 23:30                              
  18. /************************************************************************/
  19. BOOL ReleaseRes(CString strFileName,WORD wResID,CString strFileType)
  20. {
  21.         // 资源大小
  22.         DWORD        dwWrite=0;               

  23.         // 创建文件
  24.         HANDLE        hFile = CreateFile(strFileName, GENERIC_WRITE,FILE_SHARE_WRITE,NULL,
  25.                                                                 CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
  26.         if ( hFile == INVALID_HANDLE_VALUE )
  27.         {
  28.                 return FALSE;
  29.         }

  30.         // 查找资源文件中、加载资源到内存、得到资源大小
  31.         HRSRC        hrsc =  FindResource(NULL, MAKEINTRESOURCE(wResID), strFileType);
  32.         HGLOBAL hG = LoadResource(NULL, hrsc);
  33.         DWORD        dwSize = SizeofResource( NULL,  hrsc);

  34.         // 写入文件
  35.         WriteFile(hFile,hG,dwSize,&dwWrite,NULL);   
  36.         CloseHandle( hFile );
  37.         return TRUE;
  38. }
复制代码


  1. C:\exe\exeDlg.cpp(176) : error C2065: 'ReleaseRes' : undeclared identifier
  2. C:\exe\exeDlg.cpp(189) : error C2373: 'ReleaseRes' : redefinition; different type modifiers
  3. 执行 cl.exe 时出错.

  4. exe.exe - 1 error(s), 0 warning(s)
复制代码


发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-9-12 22:57:03 | 显示全部楼层

将 ReleaseRes 函数拿到 void CExeDlg::OnButton1()  的上面就可以了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

13_avatar_middle
ico_lz  楼主| 忧郁小男生 发表于 2018-9-12 22:57:13 | 显示全部楼层
Syc 发表于 2018-9-12 09:53
将这些文件以资源的形式放到exe中,之后执行exe的时候释放出来就可以了,释放的过程详见:

求个把exe资 ...

然后老大你那个实例也是一直报错。。。。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

13_avatar_middle
ico_lz  楼主| 忧郁小男生 发表于 2018-9-12 23:03:17 | 显示全部楼层
Syc 发表于 2018-9-12 22:57
将 ReleaseRes 函数拿到 void CExeDlg::OnButton1()  的上面就可以了
  1. // eeeDlg.cpp : implementation file
  2. //

  3. #include "stdafx.h"
  4. #include "eee.h"
  5. #include "eeeDlg.h"

  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif

  11. /////////////////////////////////////////////////////////////////////////////
  12. // CAboutDlg dialog used for App About

  13. class CAboutDlg : public CDialog
  14. {
  15. public:
  16.         CAboutDlg();

  17. // Dialog Data
  18.         //{{AFX_DATA(CAboutDlg)
  19.         enum { IDD = IDD_ABOUTBOX };
  20.         //}}AFX_DATA

  21.         // ClassWizard generated virtual function overrides
  22.         //{{AFX_VIRTUAL(CAboutDlg)
  23.         protected:
  24.         virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  25.         //}}AFX_VIRTUAL

  26. // Implementation
  27. protected:
  28.         //{{AFX_MSG(CAboutDlg)
  29.         //}}AFX_MSG
  30.         DECLARE_MESSAGE_MAP()
  31. };

  32. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  33. {
  34.         //{{AFX_DATA_INIT(CAboutDlg)
  35.         //}}AFX_DATA_INIT
  36. }

  37. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  38. {
  39.         CDialog::DoDataExchange(pDX);
  40.         //{{AFX_DATA_MAP(CAboutDlg)
  41.         //}}AFX_DATA_MAP
  42. }

  43. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  44.         //{{AFX_MSG_MAP(CAboutDlg)
  45.                 // No message handlers
  46.         //}}AFX_MSG_MAP
  47. END_MESSAGE_MAP()

  48. /////////////////////////////////////////////////////////////////////////////
  49. // CEeeDlg dialog

  50. CEeeDlg::CEeeDlg(CWnd* pParent /*=NULL*/)
  51.         : CDialog(CEeeDlg::IDD, pParent)
  52. {
  53.         //{{AFX_DATA_INIT(CEeeDlg)
  54.                 // NOTE: the ClassWizard will add member initialization here
  55.         //}}AFX_DATA_INIT
  56.         // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  57.         m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  58. }

  59. void CEeeDlg::DoDataExchange(CDataExchange* pDX)
  60. {
  61.         CDialog::DoDataExchange(pDX);
  62.         //{{AFX_DATA_MAP(CEeeDlg)
  63.                 // NOTE: the ClassWizard will add DDX and DDV calls here
  64.         //}}AFX_DATA_MAP
  65. }

  66. BEGIN_MESSAGE_MAP(CEeeDlg, CDialog)
  67.         //{{AFX_MSG_MAP(CEeeDlg)
  68.         ON_WM_SYSCOMMAND()
  69.         ON_WM_PAINT()
  70.         ON_WM_QUERYDRAGICON()
  71.         //}}AFX_MSG_MAP
  72. END_MESSAGE_MAP()

  73. /////////////////////////////////////////////////////////////////////////////
  74. // CEeeDlg message handlers

  75. BOOL CEeeDlg::OnInitDialog()
  76. {
  77.         CDialog::OnInitDialog();

  78.         // Add "About..." menu item to system menu.

  79.         // IDM_ABOUTBOX must be in the system command range.
  80.         ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  81.         ASSERT(IDM_ABOUTBOX < 0xF000);

  82.         CMenu* pSysMenu = GetSystemMenu(FALSE);
  83.         if (pSysMenu != NULL)
  84.         {
  85.                 CString strAboutMenu;
  86.                 strAboutMenu.LoadString(IDS_ABOUTBOX);
  87.                 if (!strAboutMenu.IsEmpty())
  88.                 {
  89.                         pSysMenu->AppendMenu(MF_SEPARATOR);
  90.                         pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  91.                 }
  92.         }

  93.         // Set the icon for this dialog.  The framework does this automatically
  94.         //  when the application's main window is not a dialog
  95.         SetIcon(m_hIcon, TRUE);                        // Set big icon
  96.         SetIcon(m_hIcon, FALSE);                // Set small icon
  97.        
  98.         // TODO: Add extra initialization here
  99.        
  100.         return TRUE;  // return TRUE  unless you set the focus to a control
  101. }

  102. void CEeeDlg::OnSysCommand(UINT nID, LPARAM lParam)
  103. {
  104.         if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  105.         {
  106.                 CAboutDlg dlgAbout;
  107.                 dlgAbout.DoModal();
  108.         }
  109.         else
  110.         {
  111.                 CDialog::OnSysCommand(nID, lParam);
  112.         }
  113. }

  114. // If you add a minimize button to your dialog, you will need the code below
  115. //  to draw the icon.  For MFC applications using the document/view model,
  116. //  this is automatically done for you by the framework.

  117. void CEeeDlg::OnPaint()
  118. {
  119.         if (IsIconic())
  120.         {
  121.                 CPaintDC dc(this); // device context for painting

  122.                 SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

  123.                 // Center icon in client rectangle
  124.                 int cxIcon = GetSystemMetrics(SM_CXICON);
  125.                 int cyIcon = GetSystemMetrics(SM_CYICON);
  126.                 CRect rect;
  127.                 GetClientRect(&rect);
  128.                 int x = (rect.Width() - cxIcon + 1) / 2;
  129.                 int y = (rect.Height() - cyIcon + 1) / 2;

  130.                 // Draw the icon
  131.                 dc.DrawIcon(x, y, m_hIcon);
  132.         }
  133.         else
  134.         {
  135.                 CDialog::OnPaint();
  136.         }
  137. }

  138. // The system calls this to obtain the cursor to display while the user drags
  139. //  the minimized window.

  140. HCURSOR CEeeDlg::OnQueryDragIcon()
  141. {
  142.         return (HCURSOR) m_hIcon;
  143. }

  144. void CEeeDlg::OnOK()
  145. {
  146.         // TODO: Add your control notification handler code here
  147.         if(ReleaseRes("Test.exe",(WORD)IDR_EXE1,"EXE"))
  148.                 MessageBox("释放文件成功!","提示",MB_OK);
  149.         else
  150.                 MessageBox("释放文件失败!","提示",MB_OK);
  151. }


  152. /************************************************************************/
  153. /* 函数说明:释放资源中某类型的文件                                    
  154. /* 参    数:新文件名、资源ID、资源类型                                 
  155. /* 返 回 值:成功返回TRUE,否则返回FALSE  
  156. /* By:Koma         2009.07.24 23:30                              
  157. /************************************************************************/
  158. BOOL ReleaseRes(CString strFileName,WORD wResID,CString strFileType)
  159. {
  160.         // 资源大小
  161.         DWORD        dwWrite=0;               

  162.         // 创建文件
  163.         HANDLE        hFile = CreateFile(strFileName, GENERIC_WRITE,FILE_SHARE_WRITE,NULL,
  164.                                                                 CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
  165.         if ( hFile == INVALID_HANDLE_VALUE )
  166.         {
  167.                 return FALSE;
  168.         }

  169.         // 查找资源文件中、加载资源到内存、得到资源大小
  170.         HRSRC        hrsc =  FindResource(NULL, MAKEINTRESOURCE(wResID), strFileType);
  171.         HGLOBAL hG = LoadResource(NULL, hrsc);
  172.         DWORD        dwSize = SizeofResource( NULL,  hrsc);

  173.         // 写入文件
  174.         WriteFile(hFile,hG,dwSize,&dwWrite,NULL);   
  175.         CloseHandle( hFile );
  176.         return TRUE;
  177. }
复制代码

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

13_avatar_middle
ico_lz  楼主| 忧郁小男生 发表于 2018-9-12 23:03:44 | 显示全部楼层
老师你看看在哪。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-9-12 23:04:34 | 显示全部楼层

把 BOOL ReleaseRes(CString strFileName,WORD wResID,CString strFileType) 函数的定义挪到CEeeDlg::OnOK() 的上面就可以了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

13_avatar_middle
ico_lz  楼主| 忧郁小男生 发表于 2018-9-12 23:11:07 | 显示全部楼层
Syc 发表于 2018-9-12 23:04
把 BOOL ReleaseRes(CString strFileName,WORD wResID,CString strFileType) 函数的定义挪到CEeeDlg::OnO ...

哈哈哈哈,好了,谢谢SYC老师、

但老师这个能不能直接在控制台里面就释放了,MFC的有点麻烦。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

13_avatar_middle
ico_lz  楼主| 忧郁小男生 发表于 2018-9-12 23:12:04 | 显示全部楼层
就是不需要我自己操作什么,点开然后就释放出来啦。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

13_avatar_middle
ico_lz  楼主| 忧郁小男生 发表于 2018-9-12 23:16:56 | 显示全部楼层
Syc 发表于 2018-9-12 23:04
把 BOOL ReleaseRes(CString strFileName,WORD wResID,CString strFileType) 函数的定义挪到CEeeDlg::OnO ...

论坛这方面好像没有帖子。。。。。我又搜了一圈

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

13_avatar_middle
ico_lz  楼主| 忧郁小男生 发表于 2018-9-12 23:30:51 | 显示全部楼层
Syc 发表于 2018-9-12 23:04
把 BOOL ReleaseRes(CString strFileName,WORD wResID,CString strFileType) 函数的定义挪到CEeeDlg::OnO ...

老师,解决了,解决了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

63_avatar_middle
在线会员 zzrhappiness 发表于 5 天前 | 显示全部楼层
文件的正常读写操作阿

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

63_avatar_middle
在线会员 zzrhappiness 发表于 5 天前 | 显示全部楼层
文件的正常读写操作

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-9-20 19:36

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表