北京北大青鳥學校:如何編寫一個下載程序(上)

      我們每天都會在網上下載很多軟件,無論是辦公軟件還是游戲軟件,都能在網上很輕松的下到本地電腦。那么我們自己能否編寫一套下載程序呢?今天,北京北大青鳥學校就為大家介紹一下如何編寫一個非常簡單的下載小程序。

      開發環境:WINDOWS 2000 + VC++6.0
      使用語言:C
      實現功能:下載網絡資源

      首先我們要建立一個文件夾來存放下載的軟件,利用Directory();就可以輕松實現。代碼如下:
      int Directory()
      {
      //建立目錄,如果成功返回1,不成功返回0
          int D;
            D=CreateDirectory(c:mydownload,NULL);
              return D;
      }

      當文件夾存在時,函數將什么也不做,達到文件夾不存在時建立文件夾的目的。
      我們利用URLDownloadToFile();這個函數來實現下載,我們來簡單的看一下這個函數的簡單介紹:
      URLDownloadToFile函數原型:
      HRESULT URLDownloadToFile(      
                           LPUNKNOWN pCaller,
                           LPCTSTR szURL,
                           LPCTSTR szFileName,
                           DWORD dwReserved,
                           LPBINDSTATUSCALLBACK lpfnCB
                          );(北京北大青鳥學校)
      這個API是在URLMON.DLL文件中的一個導出函數,簡單的實現了把一個文件從WEB服務器下載本機的功能,其實用這個函數還可以幫我們處理了斷點續傳,緩存等等的功能。

      URLDownloadToFile的五個參數:
      第一個 一般為NULL。
      第二個 參數就是要下載文件的目標URL,完整路徑。
      第三個 是本地保存路徑,也是完整路徑。
      第四個 是保留,必須為0。
      第五個 是指向一個IBindStatusCallback接口的指針,這就類似一種回調機制,你可以參考這些來活動當前下載進度,選擇是否繼續下載等等.

      在這個簡單的程序我們只關心第二和第三個參數,其他的通通設置成0。具體代碼如下:
      int downfile(char *downurl)
      {
          //下載文件保存到c:mydownload目錄下。
        HRESULT h;
        char *filename;            
        char *tk;              
        char url[MAX_PATH];        
        char path[MAX_PATH];        
        char st[]=/;
        int reslut=0;          

          strcpy (url,downurl);           //將下載路徑拷貝到URL中  
        tk=strtok(url,st);                 // 獲取下載路徑中的文件名

        while(tk!=NULL)
            {
              filename=tk;    
              tk=strtok(NULL,st);
            }

          strcpy(path,c:mydownload);     //將c:mydownload拷貝到PATH中
        strcat(path,filename);               //連接字符串,得到完整保存路徑      
         
            if(file(path))               //調用判斷文件名是否重名函數
            {
                printf(連接中……n);
            h= URLDownloadToFile(0,downurl,path,0,0); //下載文件
          if(h==S_OK)                       //判斷是否下載完成          
            {
                printf(文件下載成功!n);
            printf(文件保存路徑:%sn,path);
            return reslut;                 //函數返回0
            }
              else
              {
              reslut=1;
                return reslut;             //函數返回1
              }

            }
            else
              {
              exit(0);
              }
      }(北京北大青鳥學校)

        根據函數返回值我們來進行判斷:
              i=downfile(u);
              if(i==0)
              {
                printf(謝謝使用。n);
              }
                  else
                    {
                    printf(n未找到下載文件,請檢查下載地址是否正確n);
                    }
      (北京北大青鳥學校,未完)

      北大青鳥網上報名
      北大青鳥招生簡章
      主站蜘蛛池模板: 国产内射在线激情一区| 男人的天堂精品国产一区| 无码毛片一区二区三区中文字幕| 激情内射亚州一区二区三区爱妻| 大帝AV在线一区二区三区| 国精产品一区二区三区糖心| 三级韩国一区久久二区综合| 在线观看一区二区三区av| 国产综合无码一区二区辣椒| 影院无码人妻精品一区二区| 免费萌白酱国产一区二区| 国产伦精品一区二区三区不卡| 亚洲综合色一区二区三区小说| 久久免费国产精品一区二区| 成人国产一区二区三区| 一本岛一区在线观看不卡| 精品成人一区二区三区免费视频| 国产av一区最新精品| 亚洲AV无码国产一区二区三区| 日韩精品一区二区亚洲AV观看| 一区二区三区四区视频| 色窝窝无码一区二区三区| 日韩免费无码一区二区三区| 亚洲一区二区三区播放在线| 亚洲国产一区在线观看| 国产精品一区二区不卡| 国产精品亚洲一区二区麻豆 | 亚洲sm另类一区二区三区| 亚洲视频在线一区| 精品福利一区二区三区免费视频| 国产日韩精品视频一区二区三区| 一区二区传媒有限公司| 日韩视频在线一区| 亚洲欧洲一区二区三区| 国产在线一区二区三区| 亚洲国产精品一区二区久| 国产小仙女视频一区二区三区| 波多野结衣中文一区二区免费| 久久精品国产亚洲一区二区三区| 国产一区二区内射最近更新| 国产乱码一区二区三区四|