|
Вопрос # 1 798/ вопрос решён / |
|
Доброго времени суток, уважаемые эксперты! У меня к Вам такой вопрос: можно ли сделать такую программу, которая бы при нажатии на button воспроизводила бы видео файл (который будет лежать в одной папке с exe файлом программы) не через компонент MediaPlayer а через player, который установлен в винде по умолчанию для данного типа файлов? Спасибо
 |
Вопрос задала: 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 (статус: Посетитель), 4 августа 2008, 18:33 [#1]:
Большое спасибо - прочла статью, описание функций понятно - но не понятно мне как это все применить - жаль там нет кода... ну в принципе я нашла код использования WinExec (если это то, конечно)
if lbFilmList.ItemIndex>=0 then
WinExec(PChar('c:\\films\'+lbFilmList.Items[lbFilmList.ItemIndex]), SW_MAXIMIZE);
Не могли бы Вы мне теперь тут обьяснить, где тут мне вставлять название видео файла, может что-то в uses или var писать надо? И как это можно деформировать, что бы окрывало файл не из дирректории, а автоматически его находило, если он будет рядом лежать, если не трудно, конечно... Спасибо
|
|
Violina (статус: Посетитель), 4 августа 2008, 18:41 [#2]:
Бубырь Александр Николаеви, большое спасибо... но что-то не хочет - пишет Incompatible tipes: String and Extended а код я ввожу такой:
WinExec('start '+000.avi, SW_SHOW);
где 000.avi название файла..
|
|
ANBsoft (статус: Студент), 4 августа 2008, 18:47 [#3]:
А если так:
WinExec('start 000.avi', SW_SHOW);
или так:
WinExec(PChar('start '+'000.avi'), SW_SHOW);
|
|
Violina (статус: Посетитель), 4 августа 2008, 18:56 [#4]:
Ошибку не выдает - но не открывает - хотя что-то думает - но не открывает!
|
|
ANBsoft (статус: Студент), 4 августа 2008, 19:05 [#5]:
Только что специально проверил:
WinExec('start 0.avi', SW_SHOW);
Файл 0.avi находился в папке с программой, запустился проигрыватель по умолчанию и открыл файл.
Таким образом можно открыть что угодно, картинки, документы и пр.
|
|
Вадим К (статус: Академик), 4 августа 2008, 19:52 [#6]:
рекомендую указывать путь к файлу полностью.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Violina (статус: Посетитель), 4 августа 2008, 20:11 [#7]:
Бубырь Александр Николаевич, не знаю, что-то у меня не хочет работать - Вы не моги бы выложить проэкт свой - я может делаю что-то не так...
Вадим К, прсото если на диск записать файлы как быть с путем?
|
|
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 (статус: Посетитель), 4 августа 2008, 20:34 [#9]:
Да вот и у меня пустой проект - 1 кнопка - но не пашет... значит так:
1) открыввается
2) не открывает (докумнт Word сделал)
3)тоже самое
|
|
Вадим К (статус: Академик), 4 августа 2008, 21:29 [#10]:
to Violina
А не установленно на машине случайно касперского или какого нибуть подобно антивирусного/антиспайваре софта?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
ANBsoft (статус: Студент), 4 августа 2008, 21:42 [#11]:
Ну попробуйте войти командной строкой или каким-либо коммандером (Тотал коммандер, Фар и пр.) в папку с фильмом и выполните "start 000.avi" (без кавычек)
|
|
Violina (статус: Посетитель), 4 августа 2008, 21:49 [#12]:
Да, Вадим, установлен у меня касперский, а это может мешать? ну я только что отключила антивир и всё равно не пашет.. Я уже не знаю что сделать.. перепробовала поразному - но 0, ну не выходит, не знаю что ещё сделать.
|
|
Violina (статус: Посетитель), 4 августа 2008, 22:14 [#13]:
Александр Николаевич, не могли бы Вы выложить Ваш проэкт - я б проверила - возможно разобралась бы где ошибаюсь я.. плиз, я понимаю что там 1 строка, но все-таки не знаю в чем дело, но у меня не пашет!
|
|
Вадим К (статус: Академик), 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 (статус: Посетитель), 5 августа 2008, 08:31 [#16]:
Бубырь Александр Николаевич, спасибо - скачала я, но что-то у меня не работает - даже ничего не думает- кидаю 0.avi в папку с прогой - но ничего - не видит он что-то...
Вадим К, спасибо - это работает! Но проблема в том, что он читает файл из дирректории - а нельзя сделать, что бы он читал файл, который будет лежать рядом? - просто я хочу сделать этот exe файл автозапуском на диск, а дисководы как известно разных имен бывают - вот и думаю... спасибо!
|
|
ANBsoft (статус: Студент), 5 августа 2008, 10:00 [#17]:
Если последнее заработало, то используйте ExtractFilePath(ParamStr(0)) для получения буквы диска и пути к программе, в итоге:
code := ShellExecute(Handle, 'open', PChar(ExtractFilePath(ParamStr(0))+'0.avi'), nil, nil, SW_SHOWNORMAL);
|
|
Violina (статус: Посетитель), 5 августа 2008, 10:06 [#18]:
Ура! Вроде работает! Бубырь Александр Николаевич и Вадим К огромное Вам спасибо за помощь!
|
31 января 2011, 19:31: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|