启动遍历文件夹中的所有指定的文件 ( 执行exe文件 或者加载dll )

遍历文件夹中的文件  执行exe文件 或者加载dll

 

 HMODULE hModule = ::GetModuleHandle(NULL);

 char sFileName[256] = {0};
 CString sPath = _T("");

 GetModuleFileName(hModule, sFileName, 255);

 sPath.Format("%s", sFileName);
 int pos = sPath.ReverseFind('\\');
 if(pos != -1)
  sPath = sPath.Left(pos);
 else
  sPath = _T("");

 sPath += "\\plugin";
 TraverseFiles(sPath);

 

 

 

void TraverseFiles(CString strDelDir)
{
 CFileFind ff;
 CString strDir, strFile;

 strDir = strDelDir;

 if ( strDir.Right(1) != "//" )
  strDir += "//";

 strDir += "*.*";

 BOOL bFind = ff.FindFile(strDir);
 while ( bFind )
 {
  bFind = ff.FindNextFile();
  if ( ff.IsDots() )
   continue;
  CString strFileName = ff.GetFileName();

  strFile = strDelDir;
  if ( strFile.Right(1) != "\\" )
   strFile += "\\";
  strFile += strFileName;
  if ( ff.IsDirectory() )
   TraverseFiles(strFile);
  else
  {
   if ( ff.IsReadOnly() )
    SetFileAttributes(strFile, GetFileAttributes(strFile)&(~FILE_ATTRIBUTE_READONLY) );

   CString strExtend = strFile.Right(strFile.GetLength()-strFile.ReverseFind('.')-1);
   if (strExtend == "exe")//或者dll
   {
    STARTUPINFO si; //一些必备参数设置
    memset(&si, 0, sizeof(STARTUPINFO));
    si.cb = sizeof(STARTUPINFO);
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = TRUE;
    PROCESS_INFORMATION pi; //必备参数设置结束
    if(!CreateProcess(strFile,NULL,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi))
    {
     cout<<"创建失败@"<<endl;
    }
    ::CloseHandle (pi.hThread);
    ::CloseHandle (pi.hProcess);
   }
  }
 }
 ff.Close();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值