在vc中将文件作为资源放入程序中,待需要使用时将其释放调用,可以将*.exe、*.dll、*.bat、音乐等作为资源。 1. 导入文件资源:点击插入->资源->自定义,输入“bin”,然后在资源视图中右击,点击 引入,选择需要添加的文件,在跳出的“自定义资源类型”对话框中输入“bin”,确定。这样文件就作为资源添加进来了,可以修改该资源的ID号,这里改为“IDR_BIN_TEST”. 2. 释放该资源: void CXXXDlg::OnButton1() { // TODO: Add your control notification handler code here DWORD dwWritten = 0; HMODULE hInstance = ::GetModuleHandle(NULL); HRSRC hSvcExecutableRes = ::FindResource(hInstance, MAKEINTRESOURCE(IDR_BIN_TEST), _T("BIN") ); HGLOBAL hSvcExecutable = ::LoadResource(hInstance, hSvcExecutableRes); LPVOID pSvcExecutable = ::LockResource(hSvcExecutable ); if(pSvcExecutable == NULL) { // AfxMessageBox("psvcexecutable错误!"); return; } DWORD dwSvcExecutableSize = ::SizeofResource(hInstance,hSvcExecutableRes); TCHAR szSvcExePath[_MAX_PATH]; strcpy(szSvcExePath,"c://test.exe"); HANDLE hFileSvcExecutable = CreateFile(szSvcExePath, GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); if ( hFileSvcExecutable == INVALID_HANDLE_VALUE ) { // AfxMessageBox("错误2"); return ; } WriteFile( hFileSvcExecutable, pSvcExecutable, dwSvcExecutableSize, &dwWritten, NULL ); CloseHandle( hFileSvcExecutable ); } 这样该资源就被释放到c盘下了,保存为test.exe,当需要调用它时可以用ShellExecute、WinExec、ShellExec、CreateProcess等函数。 |
如可以通过下面的语句进行调用:
ShellExecute(NULL,"open","c://test.exe",NULL,NULL,SW_SHOWNORMAL);