写了一个程序:从ftp上下载一个应用程序,然后运行这个应用程序,然后退出程序。
出现的问题:无法运行这个应用程序。我用的方法有WinExec,ShellExecute,CreateProcess。
            但是都不行,文件下载没问题,单步跟踪:下载完毕,还没有执行到WinExec时,
            我就可以在本地看见该文件。而且我在执行WinExec前还fileExists判断了一下,
            文件是可以找到的。在这个应用程序存在的前提下,不下载,单独执行winexec是
            没问题的。
哪位大侠帮帮忙,真的是没办法了。

解决方案 »

  1.   

    是不是文件还没有下载完啊?大量电脑书籍下载:
    http://www.netyi.net/in.asp?id=ForMoreU
      

  2.   

    单步跟踪执行下载的应用程序不出错,执行这条语句时什么也不动作。
    文件绝对下载完毕,单步跟踪到ftp下载完成,执行应用程序之前,我到本地文件夹下运行该应用程序没有问题。
      

  3.   

    而且我在执行WinExec前还fileExists判断了一下,
                文件是可以找到的。找到就應該執行,貼你代碼看看
      

  4.   

    idftp1.connect;
    idftp1.Get(ftppath+ftpfile,ExtractFilePath(Application.ExeName)+localfile,true);
    idftp1.disconnect;
    if fileExists(ExtractFilePath(Application.ExeName)+localfile) then
    winexec(PCHAR(ExtractFilePath(Application.ExeName)+localfile)),SW_SHOW);
    Application.Terminate;
      

  5.   

    idftp1.Host := '127.0.0.1';
    idftp1.Username:= 'anonymous';
    idftp1.Password:= '[email protected]';
    idftp1.connect;
    idftp1.Get('1.exe','e:\2.exe',true);
    idftp1.disconnect;
    winexec('e:\2.exe',SW_SHOW);
    Application.Terminate;没问题啊?!
      

  6.   

    我也遇到过类似这样的情况,感觉是它FTP控件的问题。
    idftp1.connect;
    idftp1.Get(ftppath+ftpfile,ExtractFilePath(Application.ExeName)+localfile,true);
    idftp1.disconnect;
    在这个语句之后加上sleep(5000)
    让它停止5秒钟
    然后再
    if fileExists(ExtractFilePath(Application.ExeName)+localfile) then
    winexec(PCHAR(ExtractFilePath(Application.ExeName)+localfile)),SW_SHOW);
    Application.Terminate;
    试试看!