![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ExecuteWait ? [Delphi, Windows]
Юрий Ж. © (2003-09-05 14:34:00)Подскажите пожалуйста как с помощью ExecuteWait запустить файл Film.avi.
Пишу:
ExecuteWait('Film.avi','','',sw_show,INFINITE,p), где р:pointer;
Почему-то не работает.
SPeller (2003-09-06 01:22:00) [1]И ещё, может, стОит указывать на просто ExecuteWait('Film.avi','','',sw_show,INFINITE,p), а ExecuteWait('C:\Path_To_File\Film.avi','','',sw_show,INFINITE,p) ?
SPeller (2003-09-06 01:21:00) [2]
> проигрывать надо плеером по умолчанию.
Использовать ShellExecuteXX() с указанием только файла, который надо открыть, и он откроется программой по умолчанию.
> Как получить программу ассоциированную с данным типом файлов?
Читаем значение по умолчанию из ключа HKEY_CLASSES_ROOT\.ext, где ext - это наше расширение, и получаем значение вроде такого: extfile. Затем в списке подключей ключа HKCR\extfile\shell получаем список возможных действий с файлом (у меня для avi это open и play). А в значении по умолчанию ключа HKCR\extfile\shell получаем имя подключа (или имя команды) по умолчанию. У меня это play. Затем в значении по умолчанию ключа HKCR\extfile\shell\play\command получаем сроку, которой запускается программа, которой в ком строке передаётся имя открываемого файла и другие опциональные ключи. У меня эта строка выглядит так:
"C:\PROGRA~1\WINDOW~1\wmplayer.exe" /Play "%L"
Кладов (2003-09-05 21:40:00) [3]Задачка подробно описана в MSDN, Shell Programmers Guide. Смотрим на HKEY_CLASSES_ROOT\object_name\Shell\verb
(object_name здесь = mplayer2.exe, verb = Open или Play), там еще подключ Command, в нем значение Default содержит полную команду. Немного сложнее определить, что нужен именно mplayer2.exe или еще какое приложение. Просто посмотрите в реестре на HKEY_CLASSES_ROOT\.avi, да и на соседние тоже. У меня, например, там \OpenWithList\mplayer2.exe, а рядом нечто совсем другое.
Есть более легкий путь: использовать ShellExecuteEx, затем ждать, когда закончится процесс, ID запущенного процесса возвращается, если запуск произошел успешно.
Юрий Ж. (2003-09-05 19:14:00) [4]Мне заранее не известно с каким плеером ассоциирован тип файлов *.avi, а проигрывать надо плеером по умолчанию.
Если так то есть другой вопрос(хотя возможно больше к WinAPI):
Как получить программу ассоциированную с данным типом файлов?
Заранее благодарен!
Кладов (2003-09-05 16:41:00) [5]
if not ExecuteWait('d:\Program files\Windows Media Player\mplayer2.exe', 'E:\Video\Clips\ТАТУ - Простые движения.wmv','',sw_show,INFINITE,nil)
then ShowMessage( 'Error' + Int2Str( GetLastError ) + ' ' + SysErrorMessage( 193 ) );