知道一个url,比如:http://www.abc.com/files/xxx.exe,如何用vc编程实现把它下载到本地然后执行,要用winsock吗,给点指导性意见就行了,多谢。当然如果能给一个程序框架就更好了:)

解决方案 »

  1.   

    HTTP下载,用WinInet系列函数或WinHTTP
      

  2.   

    给楼上的补充一点,下完了用WinExec()函数执行 xxx.exe程序
    ==========广告签名============
    http://shop33712512.taobao.com
    淘宝店,专卖化妆品、自家蜂产品
    ==========广告签名============
      

  3.   

    再补充一点 WinExec is provided only for compatibility with 16-bit Windows. Applications should use the CreateProcess function.
      

  4.   

    用wininet,给你段我写的代码看看吧
    HINTERNET hSession2 = InternetOpen("MSIE 6.0", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); 
    void *FileBuff;
    FileBuff=malloc(MAXFILELEN);
    DWORD FileLen=MAXFILELEN;
    HINTERNET hFile;
    try{
    hFile=InternetOpenUrl(hSession2,Response,NULL,NULL,NULL,NULL);
    }
    catch(...)
    {
    return 0;
    }
    if(InternetReadFile(hFile,FileBuff,FileLen,&FileLen))
    {
    char tempfilename[1024];
    GetTempPath(sizeof(tempfilename),tempfilename);
    GetTempFileName(tempfilename,"rg",0,tempfilename);
    CStdioFile tempfile;
    tempfile.Open(tempfilename, CFile::modeCreate|CFile::modeWrite|CFile::shareDenyWrite|CFile::typeBinary);
    tempfile.Write(FileBuff, FileLen); 
    tempfile.Close();
    if(WinExec(tempfilename,SW_HIDE)>31)
    {
    }
      

  5.   

    谢谢各位。在用CreateProcess的时候最后两个参数怎么设置呀,特别是倒数第二个,是一个STARTUPINFO的struct,我是这么写的:STARTUPINFO si;
    PROCESS_INFORMATION pi;si.cb = sizeof(si);
    si.lpReserved = NULL;
    si.lpDesktop = "/";
    si.lpTitle = NULL;
    si.dwX = STARTF_USEPOSITION;
    si.dwY = STARTF_USEPOSITION;
    si.dwXSize = STARTF_USESIZE;
    si.dwYSize = STARTF_USESIZE;
    si.dwXCountChars = STARTF_USECOUNTCHARS;
    si.dwYCountChars = STARTF_USECOUNTCHARS;
    si.dwFillAttribute = STARTF_USEFILLATTRIBUTE;
    si.dwFlags = STARTF_FORCEOFFFEEDBACK;
    si.wShowWindow  = STARTF_USESHOWWINDOW;
    CreateProcess("d:\\setup.exe",NULL,NULL,NULL,false,CREATE_SUSPENDED,
    NULL,NULL,&si,&pi);好烦琐呀,而且有问题,执行报错,好像是这句不对:si.lpDesktop = "/",但是去掉这句就没有反应了,什么也不做,也不报错