1、使用ShellExecute或ShellExecuteEx调用一个应用程序时,如何向该程序传递一个或多个的参数?
2、如果被ShellExecute或ShellExecuteEx调用的程序用Delphi来编写的话,如何获取参数?

解决方案 »

  1.   

    1、
    uses ShellAPI;procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShellExecute(Handle, nil, 'notepad.exe', 'c:\temp\temp.txt', nil, SW_SHOW);
    end;2、
    procedure TForm1.Button1Click(Sender: TObject);
    var
      I: Integer;
    begin
      for I := 1 to ParamCount do
        Memo1.Lines.Add(ParamStr(I));
    end;
      

  2.   

    如果ShellExecute传递多个参数,参数格式应该怎样写?
    我试了一下代码,出来结果令我疑惑。
    发送部分代码:
    procedure TFormShellExec.BtnRunClick(Sender: TObject);
    var
      Buffer:Array[0..512] of char;
    begin
      if(EditExeFileName.Text<>'')then
      begin
        StrPCopy(Buffer,EditExeFileName.Text);
        ShellExecute(Self.Handle,nil,Buffer,'Hello World',nil,SW_SHOW);
      end;
    end;
    接收部分代码:
    procedure TFormMainParameter.FormShow(Sender: TObject);
    var
      i:Integer;
    begin
      Memo.Clear;
      for i:=0 to ParamCount-1 do
        Memo.Lines.Add(ParamStr(i));
    end;
    在Memo中显示的结果:
    E:\LightGreen's Document\Lab\Delphi\ShellExecAndParameter\PrjParameter.exe
    Hello
    如果把"Hello World"改为'HelloWorld"的话,结果是
    E:\LightGreen's Document\Lab\Delphi\ShellExecAndParameter\PrjParameter.exe
    连"Hello world"都不见了。
    就是说,参数"Hello World"的传递出问题了。请教
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShellExecute(Handle, nil, 'myproject.exe', 'send parameter', nil, SW_SHOW);
    end;procedure TForm1.create(Sender: TObject);
    var
      I: Integer;
    begin
      for I := 1 to ParamCount do
        Memo1.Lines.Add(ParamStr(I));
    end;