Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
12 / 12 / 2
Регистрация: 22.10.2010
Сообщений: 134
1

Открыть файл средствами Windows

05.06.2011, 05:06. Просмотров 2506. Ответов 15
Метки нет (Все метки)

Народ, у меня такая проблема. Нужно программно открыть какой-то файл средствами виндовс. Могут открываться файлы разных типов, так что к конкретному приложению привязать нельзя, так что ShellExecute не подойдет.
Может кто знает, как можно это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2011, 05:06
Ответы с готовыми решениями:

Windows не может открыть созданный вручную bmp-файл
Добрый день! Есть функция, которая используется для сохранения массива байт в bmp файл. ...

Открыть папку и выделить файл/открыть файл в Excel
Привет, как программно открыть папку и выделить файл ? также как заставить Excel открыть файл ? в...

Проверка не занят ли файл встроенными средствами
Всем привет. НЕ подскажете, в XE7 есть встроенные функции проверяющие не занят ли файл другим...

Сохранить файл в папку, а ссылку на его в БД, открыть файл по ссылке из Бд
Здравствуйте. Не получается сохранить файлы в папку Data (c записью ссылки на него в БД),а затем...

15
LK
Заблокирован
05.06.2011, 05:42 2
да все, поди, знают , для этого и придуман OpenDialog, а если вы задумали это дело втихаря провернуть, то увы
0
12 / 12 / 2
Регистрация: 22.10.2010
Сообщений: 134
05.06.2011, 05:48  [ТС] 3
Вообще никак? Может какие-то API функции есть?
0
LK
Заблокирован
05.06.2011, 05:53 4
может и есть , но для чего такое может понадобиться честному человеку ? чтобы в хаотичном порядке открывались всякие-разные программы с открытыми неведомо кем файлами ?
0
12 / 12 / 2
Регистрация: 22.10.2010
Сообщений: 134
05.06.2011, 05:59  [ТС] 5
Вы меня может быть не поняли. Щас попробую подробнее объяснить...
Имеется TreeView. В нем находится структура некоего каталога с подкаталогами. В каталогах лежат файлы. HTML файлы у меня отображаются в CppWB. Avi на отдельной форме проигрываются. Еще есть некоторые придуманные файлы, тика файла теста. И иные файлы, которые должны открываться средствами Windows. Например pdf или mp3, и другие. Не все же одной программой у себя пользуются на компе, чтобы открывать файл одного формата. Поэтому нельзя привязать открытие файла к конкретной программе.
Вот мне и нужно как-то открыть эти файлы, как по умолчанию открываются они в винде, той же прогой...
Думаю, теперь понятно
0
LK
Заблокирован
05.06.2011, 06:22 6
когда вы в ShellExecute указываете "опен" и имя файла , то файл будет открыт программой по умолчанию, - т.е., наиболее подходящей или указанной самолично "продвинутым" пользователем программой - что решает все ваши проблемы , естественно , строку TreeView с именем фала следует передать в переменну, а уже переменную использовать в ShellExecute , сделав ее, таким образов, файло-имене-независимой
1
12 / 12 / 2
Регистрация: 22.10.2010
Сообщений: 134
05.06.2011, 06:33  [ТС] 7
Что-то у меня не выходит((
C++
1
2
if (ExtractFileExt(ExtractFileName(patch))!=NULL) //Проверяем, файл это или папка (есть ли расширение)
ShellExecute(0,NULL,"open",patch.c_str(),NULL,SW_SHOW);
patch - это полный путь до файла
0
LK
Заблокирован
05.06.2011, 06:38 8
а для чего вы выдёргиваете расширение из выдернутого имени файла ? и без иф не пробовали ? или просто проверку на имя файла, а не на расширение ?

Добавлено через 1 минуту
и путаете вы этим своим patch - потому что patch - это заплатка, так называют файлы для обновления/изменения файла, как правило, исполняемого, а путь - это path ... но это так, о личном ...
0
12 / 12 / 2
Регистрация: 22.10.2010
Сообщений: 134
05.06.2011, 06:42  [ТС] 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (ExtractFileExt(ExtractFileName(patch))==".htm")
CWB1->Navigate(WideString(patch));
else if (ExtractFileExt(ExtractFileName(patch))==".tst")
{
  TestForm->M1->Lines->LoadFromFile(patch);
  TestForm->Show();
  Enabled=false;
}
else if (ExtractFileExt(ExtractFileName(patch))==".avi")
{
  //VideoView->MP1->FileName=patch;
  VideoView->Show();
}
else if (ExtractFileExt(ExtractFileName(patch))!=NULL)
ShellExecute(0,NULL,"Open",patch.c_str(),NULL,SW_SHOW);
Расширение я не выдергиваю. Я проверяю, что с этим файлом делать. Путь к файлу передается и с расширением, и полный.
Вот пытаюсь на mp3 файле проверить. Он ту последнюю строку проходит и тупо игнорит, не проигрывает ничем

Добавлено через 1 минуту
Просто назвал так сначала и не стал менять
0
LK
Заблокирован
05.06.2011, 06:47 10
C++
1
2
ShellExecute(Handle, "open", patch.c_str(),
0, 0, SW_SHOWNORMAL);
1
12 / 12 / 2
Регистрация: 22.10.2010
Сообщений: 134
05.06.2011, 06:49  [ТС] 11
Вот теперь заработала)) Спасибо)))

Добавлено через 48 секунд
Только это не из-за open, а из-за Handle наверное)
0
LK
Заблокирован
05.06.2011, 06:55 12
"Open" и "open" две большие разницы, это не паскаль.
0
2 / 2 / 0
Регистрация: 03.05.2011
Сообщений: 15
05.06.2011, 11:03 13
Подскажите какая функция открывает дисковод?
0
12 / 12 / 2
Регистрация: 22.10.2010
Сообщений: 134
05.06.2011, 14:53  [ТС] 14
LK, Да я сначала open писал, он не открывал. Потом поменял на Open, тоже не открывал. НУ а потом прописал Handle и open и все открылось

Добавлено через 9 минут
ClickMouse, Чтобы программно открыть привод CD-ROM, подключите заголовочный файл mmsystem.h и вызовите вот эту функцию:
C++
1
mciSendString("Set cdaudio door open wait", NULL, 0, Handle);
Если я вас правильно понял
А вот эта функция закрывает лоток CD привода:
C++
1
mciSendString("Set cdaudio door closed wait", NULL, 0, Handle);
1
LK
Заблокирован
05.06.2011, 18:10 15
Цитата Сообщение от NIKO666 Посмотреть сообщение
LK, Да я сначала open писал, он не открывал. Потом поменял на Open, тоже не открывал.
хотя да, там это строка.
0
2 / 2 / 0
Регистрация: 03.05.2011
Сообщений: 15
05.06.2011, 19:39 16
thank' you my best friends!!!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2011, 19:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Открыть файл средствами ОС
Нужно открыть файл средствами ос, т е заведомо неизвестной программой, но связанной ассоциацией с...

Открыть PE файл средствами си
Подскажите, стоит задача открыть PE файл средствами си. Как это сделать или может есть библиотека...

Можно ли средствами OWC11 открыть файл?
Можно ли средствами OWC11 открыть файл

Открыть csv файл средствами opendialog и загрузить в таблицу
Я только у истоков программирования, но появилась такая задача: необходимо открыть сsv файл и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.