Hola,
Acabo de hacer la prueba con una aplicación Delphi "vacía", y, si "arrastro" a su ejecutable varios archivos, puedo obtener las rutas de estos mediante "ParamStr()", concretamente, se cuenta con tantos parámetros como archivos se han "arrastrado" al ejecutable, podrías verlo así:
Código Delphi
[-]
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
for i := 0 to ParamCount-1 do begin
Memo1.Lines.Add(Format(
'Parámetro: %d - Valor: %s', [i, ParamStr(i)]
));
end;
end;
Ahora bien, yo supongo que esto tiene que ser también así en caso de que sea Windows quien llame a tu programa luego de que el usuario eligiera el comando "Abrir con tu programa" del menú contextual del explorador de archivos. ¿Lo has comprobado? ¿Has recorrido todos los parámetros disponibles y estos no contienen la ruta de todos los archivos "seleccionados"?