Я бы несколько изменил предложенный код:
Код:
if ShellExecute(Application.MainForm.Handle, PChar('open'), PChar(OpenDialog.FileName),
Nil, PChar(ExtractFilePath(OpenDialog.FileName)), SW_ShowNormal) < 32
then ShowMessage('Ничего не понимаю!');
А расширение проверять тут как-раз бессмысленно. Пускай само запускаемое приложение решит, правильный это файл для него или не очень.