我用了  取参数
if paramcount <>0 then
begin
  Edit1.Text := paramstr(1);
end;用来写右建菜单
procedure TForm1.Button1Click(Sender: TObject);
var
  reg: TRegistry;
begin
  try
    reg := TRegistry.Create;
    try
      reg.RootKey := HKEY_CLASSES_ROOT;
      reg.OpenKey('*\Shell\Trc', true);     { 写入注册表,'Trc'为标识,
                                              可自行指定 }
      reg.WriteString('', 'Open...'); { ‘Open...'为应用程序
                                               在打开方式中显示的名称 }
      reg.CloseKey;                         { 关闭注册表项 }
      reg.OpenKey('*\Shell\Trc\Command', true); { 打开命令参数项,此项用
                                                 来保存命令行及参数 }
      reg.WriteString('', '"' + ParamStr(0) + '" "%1"'); { ParamStr(0)
                                         命令行参数此处为可执行文件路径 }
      reg.CloseKey;
    finally
      reg.Free;
    end;
  except
    raise;
  end;
end;
可是只能在应用程序的目录使用,在别的目录就出错