在项目a中调用另外一个已编译好的项目b的已编译好的b.exe文件,同时传递一个参数(假设参数名status)给b.exe,b根据接收的参数值转向不同的程序段。类似在DOS模式下以下面的格式执行:
  C:\b.exe /1
  C:\b.exe /0
问在b中怎样设置参数?怎么接收调用b.exe时传递进来的参数值?在a中怎么调用b.exe文件?

解决方案 »

  1.   

    在b中:
    var
      str: String;
    begin
      str := ParamStr(1);//str就是传递进来的参数值在a中怎么调用b.exe:
      WinExec( PChar('"' + b的包含路径的文件名 + '" ' + '"参数"' ), SW_SHOWNORMAL );
      

  2.   

    c:\b.exe 0  <-把'/'去掉这样ParamStr(1)就是0ParamStr(1)是传递给可执行文件的第一个参数,ParamStr(2)是第二个参数,下列代码演示用参数调用另外一个进程(*.exe),是阻塞式调用,要等被调用进程退出后才继续执行调用进程cmd为传递参数,格式为 参数1 参数2 参数3 用空格分开各个参数。function runprocbycmd(cmd:string):integer;
    var
    sInfo : TStartupInfo;
    pInfo : TProcessInformation;
    exitCode : Cardinal; 
    begin
    try
    FillChar(sInfo,sizeof(sInfo),#0);
    sInfo.cb := SizeOf(sInfo);
    sInfo.dwFlags := STARTF_USESHOWWINDOW;
    sInfo.wShowWindow := SW_NORMAL;if not CreateProcess(nil,pchar(cmd),nil,nil,false,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, sInfo, pInfo) then
    MessageBox(Application.handle,pchar(srunprocfalse),pchar(serror),MB_OK or MB_ICONSTOP)
    else
    begin
    WaitForSingleObject(pInfo.hProcess,INFINITE);
    GetExitCodeProcess(pInfo.hProcess,exitCode);
    end;
    finally
    result:=exitCode;
    end;
    end;给分。