| 
| 
 | Вопрос # 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) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |