El problema es que ShellExecute ejecuta lo que tenga configurado el sistema.
Hay que tener en cuenta, por tanto, que los comandos de Abrir o Imprimir ejecutarán lo que el sistema tenga por defecto y esto puede variar segun el sistema. Puede ser que en un ordenador tengas un visualizador de ficheros DOC y en otro no.
Lo mismo pasa con la impresión que tenga el sistema para los ficheros BMP (por decir algo), puede variar el comportamiento de la aplicación en diferentes máquinas.
En este caso, yo creo que es mejor que exprésamente llames a un programa que sepas que te permite imprimir.
Por ejemplo, para un JPG podrías usar el MSPaint (por decir uno), con el parámetro
/p para imprimir.
MSPAINT C:\Test.jpg /p
Si utilizas WinExec, esto debería funcionar:
Código Delphi
[-]
WinExec('MSPAINT c:\test.jpg /p', SW_SHOWNORMAL);