Hola,
Si hablamos de Delphi puedes contar con algunas variables, donde recibes siempre la información que se pasa al programa por la línea de comandos, al ser ejecutado.
Si no recuerdo mal tenemos "ParamsCount", que te indica el número de parámetros que se han pasado a tu ejecutable. Y luego contamos con la función "ParamStr", que, pasándole el índice de un parámetro, te retorna su valor.
En "ParamStr(0)" siempre, y digo, siempre, tendrás la ruta completa de tu ejecutable. Y, a partir de ahí... el resto de parámetros. Por ejemplo:
Código:
start C:\miprograma.exe "C:\archivo.jpg"
Suponiendo esa línea de comandos, "miprograma.exe" recibiría dos parámetros, empezando a contar desde cero, el primero, "C:\miprograma.exe", y, el segundo, "C:\archivo.jpg", y así sucesivamente.