问题是这样的,希望大家可以试试,看是什么原因造成的。
我用ShellExecute(0,'open','conf.EXE',nil,nil,SW_SHOWNORMAL);执行打开netmeeting的操作,conf.exe是NetMeeting的可执行文件,一开始执行没问题。然后我又考虑如果该执行文件不存在会怎样,我将现有的conf.exe改名为conf1.exe,再次执行shellexecute操作,发现其可以自己新建一个conf.exe,可是当我删除原来的conf1.exe,再次执行shellexecute时,发现不能执行打开操作,我查看shellexecute的返回值为2,查看是文件名错误,可是我现在有conf.exe。我再次将conf.exe改名为conf1.exe,在有无conf.exe的情况下都可执行,即现在要想执行必须有一个conf1.exe,但是调用时我还是用conf.exe,这是什么原因呢?希望大家探讨一下。

解决方案 »

  1.   

    如果不行,你可以再试试WinExec打开看行不行
      

  2.   

    WinAPI: WinExec - 运行外部程序 
    //声明
    WinExec(
      lpCmdLine: LPCSTR; {文件名和参数; 如没指定路径会按以下顺序查找: 程序目录/当前目录/System32/Windows/PATH环境变量}
      uCmdShow: UINT     {启动选项}
    ): UINT;//返回值:
    大于 31                    {调用成功}
    等于 0                     {内存不足}
    ERROR_FILE_NOT_FOUND = 2;  {文件名错误}
    ERROR_PATH_NOT_FOUND = 3;  {路径名错误}
    ERROR_BAD_FORMAT     = 11; {EXE 文件无效}//uCmdShow 参数可选值:
    SW_HIDE            = 0; {隐藏, 并且任务栏也没有最小化图标}
    SW_SHOWNORMAL      = 1; {用最近的大小和位置显示, 激活}
    SW_NORMAL          = 1; {同 SW_SHOWNORMAL}
    SW_SHOWMINIMIZED   = 2; {最小化, 激活}
    SW_SHOWMAXIMIZED   = 3; {最大化, 激活}
    SW_MAXIMIZE        = 3; {同 SW_SHOWMAXIMIZED}
    SW_SHOWNOACTIVATE  = 4; {用最近的大小和位置显示, 不激活}
    SW_SHOW            = 5; {同 SW_SHOWNORMAL}
    SW_MINIMIZE        = 6; {最小化, 不激活}
    SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE}
    SW_SHOWNA          = 8; {同 SW_SHOWNOACTIVATE}
    SW_RESTORE         = 9; {同 SW_SHOWNORMAL}
    SW_SHOWDEFAULT     = 10; {同 SW_SHOWNORMAL}
    SW_MAX             = 10; {同 SW_SHOWNORMAL}
    --------------------------------------------------------------------------------//举例, 启动记事本:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      WinExec('notepad.exe', SW_SHOWNORMAL);
    end;
      

  3.   

    可能是服务的原因,即你的Exe文件虽然改名,但由于服务程序已经启动,它自然能恢复文件,但文件不管怎么改名,毕竟不能删除