no se que programa quieres controlar, pero yo hice algo así con el VLC Media Player.
Tienes varios comandos que puedes manejar que son muy utiles.
Arma una lista de reprodución con un TStringList. Agregas todos los archivos que quieras reproducir, y luego lo guardas con el método SaveToFile como "ListaRep.m3u".
Luego llamas a la aplicación con los siguientes parámetros:
Código Delphi
[-]
ShellExecute(0,nil,
pchar('C:\Archivos de programa\VideoLAN\VLC\vlc.exe'),
pchar('ListaRep.m3u --one-instance --loop -f --no-video-title-show'),
'C:\directorio_donde_esten_los_archivos',SW_NORMAL);
--one-instance: Solo abre una instancia del VLC. Útil para no abrir mas de un reproductor a la vez.
--loop: Ejecuta la lista una y otra vez.
-f: Pantalla completa.
--no-video-title-show: no muestra el nombre del archivo que se esta reproduciendo.
Para matar la aplicación VLC yo utilizo la siguiente funcion:
Código Delphi
[-]
function MatarProceso(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0),
FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle,
FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
Espero haberte sido de ayuda. Saludos.