Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 798

/ вопрос решён /

Доброго времени суток, уважаемые эксперты! У меня к Вам такой вопрос: можно ли сделать такую программу, которая бы при нажатии на button воспроизводила бы видео файл (который будет лежать в одной папке с exe файлом программы) не через компонент MediaPlayer а через player, который установлен в винде по умолчанию для данного типа файлов? Спасибо

Violina Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задала: Violina (статус: Посетитель)
Вопрос отправлен: 4 августа 2008, 17:59
Состояние вопроса: решён, ответов: 2.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Violina!
Надо использовать функцию ShellExecute.
Вот здесь есть описание.
попробуйте сделать, неполучиться- пишите в минифорум - разберёмся

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 4 августа 2008, 18:13
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: ANBsoft

Здравствуйте, Violina!
Добавлю к предыдущему оратору то, что для открытия любого файла приложением по умолчанию можно выполнить start "имя файла".
В Вашем случае достаточно следующего: WinExec('start '+filename, SW_SHOW);

Ответ отправил: ANBsoft (статус: Студент)
Время отправки: 4 августа 2008, 18:26
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 18; последнее сообщение — 5 августа 2008, 10:06; участников в обсуждении: 3.
Violina

Violina (статус: Посетитель), 4 августа 2008, 18:33 [#1]:

Большое спасибо - прочла статью, описание функций понятно - но не понятно мне как это все применить - жаль там нет кода... ну в принципе я нашла код использования WinExec (если это то, конечно)

if lbFilmList.ItemIndex>=0 then
WinExec(PChar('c:\\films\'+lbFilmList.Items[lbFilmList.ItemIndex]), SW_MAXIMIZE);

Не могли бы Вы мне теперь тут обьяснить, где тут мне вставлять название видео файла, может что-то в uses или var писать надо? И как это можно деформировать, что бы окрывало файл не из дирректории, а автоматически его находило, если он будет рядом лежать, если не трудно, конечно... Спасибо
Violina

Violina (статус: Посетитель), 4 августа 2008, 18:41 [#2]:

Бубырь Александр Николаеви, большое спасибо... но что-то не хочет - пишет Incompatible tipes: String and Extended а код я ввожу такой:

WinExec('start '+000.avi, SW_SHOW);

где 000.avi название файла..
ANBsoft

ANBsoft (статус: Студент), 4 августа 2008, 18:47 [#3]:

А если так:
WinExec('start 000.avi', SW_SHOW);
или так:
WinExec(PChar('start '+'000.avi'), SW_SHOW);
Violina

Violina (статус: Посетитель), 4 августа 2008, 18:56 [#4]:

Ошибку не выдает - но не открывает - хотя что-то думает - но не открывает!
ANBsoft

ANBsoft (статус: Студент), 4 августа 2008, 19:05 [#5]:

Только что специально проверил:
WinExec('start 0.avi', SW_SHOW);
Файл 0.avi находился в папке с программой, запустился проигрыватель по умолчанию и открыл файл.
Таким образом можно открыть что угодно, картинки, документы и пр.
Вадим К

Вадим К (статус: Академик), 4 августа 2008, 19:52 [#6]:

рекомендую указывать путь к файлу полностью.
Галочка "подтверждения прочтения" - вселенское зло.
Violina

Violina (статус: Посетитель), 4 августа 2008, 20:11 [#7]:

Бубырь Александр Николаевич, не знаю, что-то у меня не хочет работать - Вы не моги бы выложить проэкт свой - я может делаю что-то не так...

Вадим К, прсото если на диск записать файлы как быть с путем?
ANBsoft

ANBsoft (статус: Студент), 4 августа 2008, 20:29 [#8]:

Да ничего, пустой проект с одной кнопкой и обработчиком
WinExec('start 0.avi', SW_SHOW);
1)попробуйте открывается ли файл простым щелчком на нем в проводнике
2) попробуйте открыть любой другой файл (Excel, Word)
3) попробуйте WinExec(PChar('start "'+ExtractFilePath(ParamStr(0))+'000.avi"'), sw_show);
Violina

Violina (статус: Посетитель), 4 августа 2008, 20:34 [#9]:

Да вот и у меня пустой проект - 1 кнопка - но не пашет... значит так:
1) открыввается
2) не открывает (докумнт Word сделал)
3)тоже самое
Вадим К

Вадим К (статус: Академик), 4 августа 2008, 21:29 [#10]:

to Violina
А не установленно на машине случайно касперского или какого нибуть подобно антивирусного/антиспайваре софта?
Галочка "подтверждения прочтения" - вселенское зло.
ANBsoft

ANBsoft (статус: Студент), 4 августа 2008, 21:42 [#11]:

Ну попробуйте войти командной строкой или каким-либо коммандером (Тотал коммандер, Фар и пр.) в папку с фильмом и выполните "start 000.avi" (без кавычек)
Violina

Violina (статус: Посетитель), 4 августа 2008, 21:49 [#12]:

Да, Вадим, установлен у меня касперский, а это может мешать? ну я только что отключила антивир и всё равно не пашет.. Я уже не знаю что сделать.. перепробовала поразному - но 0, ну не выходит, не знаю что ещё сделать.
Violina

Violina (статус: Посетитель), 4 августа 2008, 22:14 [#13]:

Александр Николаевич, не могли бы Вы выложить Ваш проэкт - я б проверила - возможно разобралась бы где ошибаюсь я.. плиз, я понимаю что там 1 строка, но все-таки не знаю в чем дело, но у меня не пашет!
ANBsoft

ANBsoft (статус: Студент), 4 августа 2008, 22:34 [#14]:

Ну если это поможет:
http://rapidshare.com/files/134827156/Test.rar.html
или
http://depositfiles.com/files/6995176
если проблемы с рапидой и депозитом, пишите, кину еще куда-нибудь
Вадим К

Вадим К (статус: Академик), 4 августа 2008, 22:56 [#15]:

Касперский и подобные антивирусы при "правильной настройке" (в кавычках, потому что это сарказм, тоесть плохо настроеных) могут и не такое выдавать.
Давайте сделаем маленькое тестовое приложение, оно должно показать все грехи. Скорее всего, что запустив его, вы сами поймёте, в чём проблема.
итак. на форму ставим кнопку и мемо. Обработчик кнопки пишем такой
 uses ShellApi;
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
 var code, code2:cardinal;
begin
 SetLastError(0);
 code := ShellExecute(Handle, 'open', 'C:\', nil, nil, SW_SHOWNORMAL);
 Memo1.lines.add(inttostr(code) + '  ' + SysErrorMessage(code));
end;
Теперь запускаем и жмем кнопку. должен открыться проводник (при условии, что у вас есть диск С.) потом вместо C:\ вписываете свои подопытные файлы и снова пробуете. в мемо будет выводиться число и текстовое описание кода ошибки. вообще то, коды выше 32 - это нормальный запуск, поэтому можете увидеть число 42 и всё. Ну и конечно запущенную программу.

Если же запускаться не будет, показывайте, какую ошибку у вас выводит (я сделал специально мемо для упрощения копирования ошибки).
Галочка "подтверждения прочтения" - вселенское зло.
Violina

Violina (статус: Посетитель), 5 августа 2008, 08:31 [#16]:

Бубырь Александр Николаевич, спасибо - скачала я, но что-то у меня не работает - даже ничего не думает- кидаю 0.avi в папку с прогой - но ничего - не видит он что-то...

Вадим К, спасибо - это работает! Но проблема в том, что он читает файл из дирректории - а нельзя сделать, что бы он читал файл, который будет лежать рядом? - просто я хочу сделать этот exe файл автозапуском на диск, а дисководы как известно разных имен бывают - вот и думаю... спасибо!
ANBsoft

ANBsoft (статус: Студент), 5 августа 2008, 10:00 [#17]:

Если последнее заработало, то используйте ExtractFilePath(ParamStr(0)) для получения буквы диска и пути к программе, в итоге:
code := ShellExecute(Handle, 'open', PChar(ExtractFilePath(ParamStr(0))+'0.avi'), nil, nil, SW_SHOWNORMAL);
Violina

Violina (статус: Посетитель), 5 августа 2008, 10:06 [#18]:

Ура! Вроде работает! Бубырь Александр Николаевич и Вадим К огромное Вам спасибо за помощь!

31 января 2011, 19:31: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:34
Выполнено за 0.03 сек.