![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 14 Всего: 58 |
Доброго времени суток!
Задача тривиальная - открыть файл из Delphi. Файлы, связанные с какой-либо программой, замечательно открываются функцией ShellExecute. Интересно следующее: как через функцию ShellExecute (или др.) открыть незарегистрированный файл так, как его открывает проводник Windows (появляется стандартный диалог с запросом поиска программы в интернете или выбора вручную). Обычное использование ShellExecute просто возвращает результат < 32. Заранее спасибо. Это сообщение отредактировал(а) Keeper89 - 21.4.2009, 23:49 |
|||
|
||||
| Valechik2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 24.4.2009 Репутация: нет Всего: нет |
А самому сделать такое окно никак?
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
Да? А как вы предлагаете осуществлять поиск соответствия в интернете или на локальном компьютере? Ладно с интернетом, возьмем локальную машину. Предлагаете перебирать все установленные программы, анализируя их параметры запуска, т.е. может ли установленная программа воспринимать запуск с файлом из командной строки+через DDE, вносить их в визуальный список и запускать самому? Расточительно чересчур. Кстати, поиск по MSDN не дал мне ответа на этот вопрос. Но это возможно, ведь так умеет делать не только проводник, но и (к примеру) TotalCommander. Скорее всего, не там (и не так) искал... Добавлено через 9 минут и 54 секунды Хотя, стоп. Вот этот код вызывает появление стандартного диалога в Windows Vista:
|
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 14 Всего: 58 |
Спасибо за обсуждение.
Решил вопрос следующим образом:
P.S. kami, есть ли разница между PChar(filename) и @filename[1]? И если да, то что использовать лучше? Это сообщение отредактировал(а) Keeper89 - 25.4.2009, 14:14 |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
Есть. @filename[1] нельзя использовать, если заранее неизвестно, возможна ли ситуация filename=''. Иначе вылезет исключение, т.к. индекса [1] не существует. Это, кстати, можно использовать и в целях отладки. В остальном - дело предпочтений (мне, например, удобнее с @), хотя можно глянуть и в CPU window, возможно есть и более существенные отличия. Многие компоненты сторонних разработчиков используют свое приведение к PChar, т.к. PChar('') возвращает валидный указатель на пустую строку, а в некоторых случаях нужно, чтобы возвращался nil. Это был вольный перевод ответа Набережных С. на мой абсолютно такой же вопрос года 3 назад. |
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 14 Всего: 58 |
ОК, возьму на заметку.
Это сообщение отредактировал(а) Keeper89 - 25.4.2009, 16:30 |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |