![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как програмно открыть файл с заданным расширением(например .rm)? [D5, Win95/98, WinME, NT4, Win2k, WinXP]
maxi © (2003-09-09 12:21:00)
Проблема такая : как программо узнать путь к приложению, которое ответственно за файлы с данным расширением? Например мне необходимо открыть файл 1.avi из своей программы; У меня в системе зарегистрированы две проги открывающие этот файл: С:\1.exe и D:\TEMP\2.exe;
Искать самому в реестре путь к файлу - убожество, поскольку система сама уже по умолчанию открывает из проводника 1.exe с ключом 1.avi;
Хотелось бы услышать мнение профессионалов.
Anatoly Podgoretsky (2003-09-09 14:38:00) [1]
maxi (09.09.03 13:46) [12]
Проблема наверно в том, что у тебя действие по умолчаниб не Open, а скажем "Проиграть", надо просто вызывать по другому.
ShellExecute( 0, nil,filepath,nil, nil, SW_SHOWNORMAL);
maxi (2003-09-09 13:46:00) [2]
Понял в чём проблем : "open" - The function opens the file specified by lpFile. The file can be an executable file or a document file. The file can be a folder to open.
The lpOperation parameter can be NULL. In that case, the function opens the file specified by lpFile.
Ключ OPEN требует обязательно выполняемого файла или документа. Если этот ключ не указывать - процедура передаёт вопрос об открытии файла самой операционной системе и уже та решает каким макаром его открывать... Благодарю всех за проявленную заботу и подсказки. Обязуюсь лучше хелпы читать... :о)
clickmaker (2003-09-09 13:45:00) [3]
Видимо в том, что действие open все-таки связано с Медиа Плеером, а действие по умолчанию, т.е. nil, с LPlay
maxi (2003-09-09 13:40:00) [4]
ClickMaker - ты просто чудо !!!!!!!! Уряяяяяяя, заработало!!!!.
Хотя в чём парадокс ?
clickmaker (2003-09-09 13:38:00) [5]
Попробуй "open" убрать, поставь там nil
maxi (2003-09-09 13:38:00) [6]
А у меня вызывается WindowsMediaPlayer. Хотя должно LPlay вызываться. (другой проигрыватель).
2ClickMaker : в контектном меню на первом месте и выделен жирным шрифтом LPlay. На втором месте идёт запись "Play with Media Player"
Рамиль (2003-09-09 13:26:00) [7]
В догонку, работает даже текая конструкция, только что проверил
ShellExecute(Self.Handle, "open", "c:\Documents and Settings\Ramil\Мои документы\Мои видеозаписи\cue_ball_cat.avi",
nil, nil, SW_SHOWNORMAL);
maxi (2003-09-09 13:23:00) [8]
MyHandle - переменная типа cardinal, или HWND , определяющая окно приложения.
Её можно брать из Apllication.Handle или любой формы Form1.Handle...
Рамиль (2003-09-09 13:21:00) [9]
> ShellExecute(MyHandle,"open","explorer.exe c:\1.avi",nil,nil,SW_SHOWNORMAL)
А что значит MyHandle ?
maxi (2003-09-09 13:13:00) [10]
У меня там выпадает Player.exe (на первом месте стоит) и WindowsMedia Player (на втором месте)
clickmaker (2003-09-09 12:45:00) [11]
А в контекстном меню Проводника на этом файле какой пункт жирный?
maxi (2003-09-09 12:35:00) [12]
Пробовал. Глухо как в танке.
А вот строка
ShellExecute(MyHandle,"open","explorer.exe c:\1.avi",nil,nil,SW_SHOWNORMAL) выполняется. Правда спрашивает кучу лишнего по пути : ей кажется что ассоциации с avi нет (но ведь проводник то открывает и ничего не спрашивает) и приентом запускает стандартный виндо-медиа плеер, хотя из проводника запускается совсем другой проигрыватель.
Что делать то ?
clickmaker (2003-09-09 12:26:00) [13]
ShellExecute(Handle, "open", "c:\1.avi", nil, nil, SW_SHOWNORMAL)