Hola.
Seguramente el problema lo tengas en como maneja el parámetro Handler.cmd ¿ Por que pienso eso ? Acabo de hacer la siguiente prueba:
Contenido del Handler.cmd que cree en mi equipo:
Código:
set WORKFILE=%~1
type %~1
PAUSE
Este código muestra el contenido de un archivo enviado como parámetro y espera la pulsación de una tecla. Lo podes comprobar fácilmente escribiendo desde el propmt:
Código:
C:\>HANDLER C:\TEMP\ARCHIVO.TXT
(Ruta+Nombre de un archivo de texto existente)
Luego desde Delphi, ejecuto este código:
Código Delphi
[-]
uses ShellApi;
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Filter := 'Archivos de texto|*.TXT';
if OpenDialog1.Execute then
ShellExecute(Handle, 'open', 'C:\HANDLER.CMD', PChar(OpenDialog1.FileName), nil, SW_NORMAL);
end;
Y sin ningún problema, visualizo en la ventana de símbolo de sistema el contenido del archivo .TXT enviado mediante
ShellExecute.
No hay error en el envío del parámetro mediante
ShellExecute ni en la recepción del mismo por
Handler.cmd, por lo tanto el problema debe suceder luego en el manejo que hace
Handler.cmd con el parámetro que recibió.
Un saludo.