科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件编程技巧20法之三:运行资源中的程序

编程技巧20法之三:运行资源中的程序

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

编程技巧20法之三:运行资源中的程序

作者:徐景周 来源:赛迪网 2007年11月13日

关键字: 程序 运行 编程技巧 Linux

  • 评论
  • 分享微博
  • 分享邮件

6.如何直接运行一个资源中的程序

bool Run()
   {
	CFile f; 
	char* pFileName = "Execution.exe";
	if( !f.Open( pFileName, CFile::modeCreate | CFile::modeWrite, NULL ) )
	{
		AfxMessageBox("Can not create file!");
		return 0;
	}
        CString path = f.GetFilePath();
	HGLOBAL hRes;
	HRSRC hResInfo;
     //获取应用实例  
	HINSTANCE insApp = AfxGetInstanceHandle();
     //寻找EXE资源名
	hResInfo = FindResource(insApp,(LPCSTR)IDR_EXE4,"EXE");
	hRes = LoadResource(insApp,hResInfo );   // Load it
	DWORD dFileLength = SizeofResource( insApp, hResInfo );  //计算EXE文件大小 
	f.WriteHuge((LPSTR)hRes,dFileLength);  //写入临时文件 
	f.Close();
	HINSTANCE HINSsd = ShellExecute(NULL, "open",path, NULL, NULL, 
SW_SHOWNORMAL);> //运行它.  
	return 1;
}

7.如何遍历整个目录

#include <windows.h>
#include <shlobj.h>
//浏览目录.
void	BrowseFolder( void )
{
	TCHAR path[MAX_PATH];
	BROWSEINFO bi = { 0 };
	bi.lpszTitle = ("递归调用所有目录");
	LPITEMIDLIST pidl = SHBrowseForFolder ( &bi );
	if ( pidl != 0 )
	{
		// 获取目录路径
		SHGetPathFromIDList ( pidl, path );
		//设置为当前路径
		SetCurrentDirectory ( path );
		//搜索所有子目录
		SearchFolder( path );
		// 释放内存
		IMalloc * imalloc = 0;
		if ( SUCCEEDED( SHGetMalloc ( &imalloc )) )
		{
			imalloc->Free ( pidl );
			imalloc->Release ( );
		}
}
//搜索其下所有子目录及文件.
void	SearchFolder( TCHAR * path )
{
		WIN32_FIND_DATA FindFileData;
		HANDLE			hFind;

		TCHAR	filename[ MAX_PATH + 256 ];
		TCHAR	pathbak[ MAX_PATH ];
		//复制初始用户选择目录
		strcpy( pathbak, path );
		//寻找第一个文件
		hFind = FindFirstFile ( "*.*", &FindFileData );
		//搜索所有文件及子目录
		do
		{
			if ( hFind != INVALID_HANDLE_VALUE )
			{
		//如果是当前目录或父目录,跳过
		if ( ! ( strcmp( FindFileData.cFileName, "." ) ) || 
! ( strcmp( FindFileData.cFileName, ".." ) ) )
				{
					continue;
				}

				//恢复初始用户选择目录
				strcpy( path, pathbak );

				//列出所有发现的文件
	sprintf( path, "%s\\%s", path, FindFileData.cFileName );
				//如果 SetCurrentDirectory 
成功的话,则它是一个目录,递归调用继续搜索子目录
				if ( ( SetCurrentDirectory( path ) ) )
				{
					SearchFolder( path );
				}
				
          		//插入文件及路径名到列表框m_listbox_hwnd中
           		SendMessage( m_listbox_hwnd, LB_ADDSTRING, 0, path ); 
//<--INSERT WHAT YOU WANT DONE HERE!
			}
		}
while ( FindNextFile ( hFind, &FindFileData ) && hFind != 
INVALID_HANDLE_VALUE );
		FindClose ( hFind );
}

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章