我在C++Builder中用 ShellExecute(0, "Open", ExeName.c_str(),"abc",NULL,SW_SHOW); 然后在Delphi中用
end;procedure TMainForm.FormCreate(Sender: TObject);
var
  hsList: THashedStringList;
  I: Integer;
begin
  hsList := THashedStringList.Create;
  try
      for I := 1 to ParamCount - 1 do
      begin
         hsList.Add(ParamStr(i));
      end;
      ShowMessage(hsList.Text);
  finally
      hsList.Free;
  end;
end;
怎么接收不到参数abc,还有个问题,就是我要发送多个参数时是什么格式的!

解决方案 »

  1.   

    ShellExecute(0, 'Open',Pchar('exe路径'), Pchar('参数1 参数2 参数3'), nil, SW_SHOWNORMAL);多个用空格
      

  2.   

    先排除shellexecute
    直接运行application1.exe param1 param2看看能不能收到
      

  3.   

    AnsiString ExeName = ExtractFilePath(Application->ExeName)+"\RestCool.exe ";
    AnsiString Params =  " HostApp="+IntToStr(int(this->Handle))+" "+" AgentCode=8809 QueueID=44-1 END";
    ShellExecute(0, "Open", ExeName.c_str(),Params.c_str(),NULL,SW_SHOW);
    }可以正常接收参数了,为什么会少一个,当传一个参数时就收不到了,像上面的语句最后的END就收不到,END前面和QueuID=44-1是有空格的
      

  4.   

    ShellExecute(self.handle,'open',pchar(程序名),pchar(s),nil,sw_normal);s 为 参数1,参数2,.. ,可以用逗号隔开。在另一程序中可以用 paramstr(1)接收,然后再分解 逗号之间的参数值就可以了。
      

  5.   


    不要减一
    ParamCount - 1
      

  6.   

    ShellExecute(self.handle,'open',pchar(程序名),pchar(s),nil,sw_normal);s 为 参数1,参数2,.. ,可以用逗号隔开。在另一程序中可以用 paramstr(1)接收,然后再分解 逗号之间的参数值就可以了。细致点,不是大问题。