|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Автооткрытие файлов
Здравствуйте! Не подскажете как заставить файлы (текст, графика) автоматически по щелчку из windows открываться программой на delphi (текст, графика). Везде смотрел, именно этого нигде не нашел. Заранее спасибо
|
#2
|
|||
|
|||
Если программа на Delphi умеет открывать файлы, то дальше вопрос к Windows.
Открывается проводник. Меню "Сервис" > "Свойства папки...". В открывшемся диалоге закладка "Типы файлов". Из списка выбирается нужное расширение (или добавляется свое, если такого расширения в списке нет). Нажимается кнопка "Изменить". В диалоге через кнопку "Обзор..." указывается программа на Delphi. Не забывайте делать резервные копии |
#3
|
||||
|
||||
Можно сразу в Delphi
Создаешь раздел в реестре HKEY_CLASSES_ROOT\{твое расширение} Далее значение по умолчнию - это описание файла HKEY_CLASSES_ROOT\{твое расширение}\DefaultIcon Значение по умолчнию - иконка файла HKEY_CLASSES_ROOT\{твое расширение}\shell\open\command Значение по умолчанию - путь к программе Пример Код:
uses Registry; procedure RegisterMyFileType(Ext, Description, Icon, ExePath: String); begin with TRegistry.Create do begin RootKey:=HKEY_CLASSES_ROOT; OpenKey(Ext, True); WriteString('', Description); CloseKey; OpenKey(Ext + '\DefaultIcon', True); WriteString('', Icon); CloseKey; OpenKey(Ext + '\shell\open\command', True); WriteString('', ExePath); CloseKey; Free; end; end; Код:
RegisterMyFileType('.txt', 'Текстовый файл', Application.ExeName + ', 0', Application.ExeName + ' %1'); Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#4
|
||||
|
||||
В догонку к ответу, программа открываться то будет, но неизвестно какой файл открывать. В FormCreate получи значение ParamStr(1) и это будет путь к твоему файлу.
PS> Ещё как вариант: Суть такая же, мы регистрируем за собой определённый тип файла и потом при открытии его, делаем необходимую обработку. Но уже через Com объект. В этом случае будет больше возможностей, но сложнее реализация) Нет повести печальнее на свете, чем повесть о заклиневшем Resete. |
#5
|
|||
|
|||
Я сейчас тоже решаю эту задачу . Можете объяснить , что это за ParamStr(1) и как его получать?
|
#6
|
|||
|
|||
Командная строка которая передается на вход программе.
Например ParamStr(0) - это путь к твоей проге. |
#7
|
|||
|
|||
Спасибо. В этом то я разобрался . Теперь проблема в другом : я создаю плеер , и в FormCreate пишу строку ListBox1.Items.Add(ParamStr(1));. Только при запуске появляется ошибка. Что делать. FormShow бездействует.
|
#8
|
||||
|
||||
Просто ListBox1 еще не создан, надо использовать другое событие, например, OnShow или OnActivate
Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#9
|
|||
|
|||
Если использовать OnActivate , то если нажать на другое окно , а затем вернуться в главное , то будут добавляться строки , одни и те же. А с FormShow ничего не происходит , программа просто загружается.
|
#10
|
||||
|
||||
а может парметр пустой?
Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#11
|
|||
|
|||
Да нет. Я же говорю , что если через Activate они то добавляются и играют , только они потом начинают размножаться. А Show чего то не работает.
|
#12
|
|||
|
|||
Получается так : если листбокс находится на моей главной форме песня добавляется . А у меня мой плейлист находится на другой форме , и она не добавляется . Что делать?
|
#13
|
|||
|
|||
Ну вы пипец:
Код:
procedure TForm1.FormShow(Sender: TObject); begin Form2.Listbox1.Items.Add(ParamStr(1)); end; |
#14
|
|||
|
|||
Блин, я же говорю что не работает с помощью этого кода . Непонятно что ли объяснил.
|
#15
|
|||
|
|||
Значит выкидывай Delphi. У меня все прекрасно пашет.
|