|
Вопрос # 3 851/ вопрос открыт / |
|
Доброго времени суток !
Столкнулся со следующей проблемой =(
Теперь я пытаюсь ассоциировать файлы со своим приложением... Надо произвести ассоциацию .mp3 .wav .ogg и еще 34 аудио формата... Пытался использовать TFileType, с 3 го запуска он что то сделал с реестром, что я не мог открыть не одного файла, папки.. вообще не чего, восстановление системы помогло только.. Попробовал http://delphidevelop.ru/publ/13-1-0-229
Не получилось, как у меня было ассоциировано с WMP 12 так и осталось.. Помогите пожалуйста разобраться в этом... За раннее огромное спасибо (=
 |
Вопрос задал: BloodVIRUS (статус: Посетитель)
Вопрос отправлен: 5 марта 2010, 20:18
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Ладно, уговорил.
Вот тебе кусок модуля одного из моих проектов. Это несколько функций для работы с реестром. См. приложение.
Я использую их в конструкторе главной формы вот так:
const
// Расширения, иконки, реестр
ProjectFileExt = '.seproj';
ProjectDefaultExt = 'seproj';
ProjectExtDesc = 'seproject';
ProjectFileDesc = 'Проект Source Editor';
ProjectIconIndex = 1;
// Регистрация расширения
if not FileExtIsRegistered(ProjectFileExt)
then RegFileExt(ProjectFileExt,
ProjectExtDesc,
ProjectFileDesc,
ProgramExeFile,
'%1',
ProjectIconIndex);
Приложение: Переключить в обычный режим-
- function RegFileExt(AExtension, AExtDescription, AFileDescription,
- AOpenWith, AParamString: String; AIconIndex: Integer): Boolean;
- var Reg: TRegistry;
- begin
- Reg := TRegistry.Create;
- try
- with Reg do begin
- RootKey := HKEY_CLASSES_ROOT;
- OpenKey(AExtension, True);
- WriteString('', AExtDescription);
- OpenKey('' + AExtDescription, True);
- WriteString('', AFileDescription);
- OpenKey('DefaultIcon', True);
- WriteString('', AOpenWith + ','+IntToStr(AIconIndex));
- OpenKey('' + AExtDescription + 'ShellOpenCommand', True);
- WriteString('', '"' + AOpenWith + '" "' + AParamString + '"');
- end;
- Result := True;
- except
- Result := False;
- end;
- Reg.Free;
- end;
-
-
- function FileExtIsRegistered(const AExtension: string): Boolean;
- var
- Reg: TRegistry;
- begin
- Reg:= TRegistry.Create;
- try
- Reg.RootKey:= HKEY_CLASSES_ROOT;
- Result:= Reg.KeyExists(AExtension);
- finally
- Reg.Free();
- end;
- end;
-
-
- function UnRegFileExt(AExtension, AExtDescription: String): Boolean;
- var Reg: TRegistry;
- begin
- Reg := TRegistry.Create;
- try
- with Reg do
- begin
- RootKey := HKEY_CLASSES_ROOT;
- DeleteKey(AExtension);
- DeleteKey('' + AExtDescription);
- end;
- Result := True;
- except
- Result := False;
- end;
- Reg.Free;
- end;
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 6 марта 2010, 08:48
|
Мини-форум вопроса
Всего сообщений: 47; последнее сообщение — 7 марта 2010, 16:12; участников в обсуждении: 2.
Страницы: [« Предыдущая] [1] [2] [3] [Следующая »]
|
BloodVIRUS (статус: Посетитель), 6 марта 2010, 18:12 [#21]:
Все равно создается только раздел .mp3 в котором подразделы написанные мной выше =(
|
|
min@y™ (статус: Доктор наук), 6 марта 2010, 18:21 [#22]:
Предлагаю поэкспериментировать.
const
// Расширения, иконки, реестр
ProjectFileExt = '.trash';
ProjectDefaultExt = 'trash';
ProjectExtDesc = 'trashproject';
ProjectFileDesc = 'Мусорный файл';
ProjectIconIndex = 0;
ProgramExeName = 'Notepad.exe';
Затем посмотри, создались ли разделы HKEY_CLASSES_ROOT\.trash и HKEY_CLASSES_ROOT\trashproject
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
BloodVIRUS (статус: Посетитель), 6 марта 2010, 18:27 [#23]:
Создался только 1 раздел
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.trash]
@="trashproject"
[HKEY_CLASSES_ROOT\.trash\trashproject]
@="Мусорный файл"
[HKEY_CLASSES_ROOT\.trash\trashproject\DefaultIcon]
@="Notepad.exe,0"
[HKEY_CLASSES_ROOT\.trash\trashproject\DefaultIcon\trashprojectShellOpenCommand]
@="\"Notepad.exe\" \"%1\""
|
|
min@y™ (статус: Доктор наук), 6 марта 2010, 18:34 [#24]:
Ёпт, я понял, в чём проблема! Движок сайта обрезал некоторые символы в приложении к ответу - все символы '\' превратились в ''. Щас исходник, откуда копировал, глянул и сразу нашёл 10 отличий. Вот правильные функции:
// Регистрация расширения, установка иконки и ассоциативной программы
function RegFileExt(AExtension, AExtDescription, AFileDescription,
AOpenWith, AParamString: String; AIconIndex: Integer): Boolean;
var Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
with Reg do begin
RootKey := HKEY_CLASSES_ROOT;
OpenKey(AExtension, True);
WriteString('', AExtDescription);
OpenKey('\' + AExtDescription, True);
WriteString('', AFileDescription);
OpenKey('DefaultIcon', True);
WriteString('', AOpenWith + ','+IntToStr(AIconIndex));
OpenKey('\' + AExtDescription + '\Shell\Open\Command', True);
WriteString('', '"' + AOpenWith + '" "' + AParamString + '"');
end;
Result := True;
except
Result := False;
end;
Reg.Free;
end;
// Проверка регистрации
function FileExtIsRegistered(const AExtension: string): Boolean;
var
Reg: TRegistry;
begin
Reg:= TRegistry.Create;
try
Reg.RootKey:= HKEY_CLASSES_ROOT;
Result:= Reg.KeyExists(AExtension);
finally
Reg.Free();
end;
end;
// Удаление регистрации
function UnRegFileExt(AExtension, AExtDescription: String): Boolean;
var Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
with Reg do
begin
RootKey := HKEY_CLASSES_ROOT;
DeleteKey(AExtension);
DeleteKey('\' + AExtDescription);
end;
Result := True;
except
Result := False;
end;
Reg.Free;
end;
З.Ы. Админ, разберись. А то мы тут 2 часа башку ломали, а это оказался косяк сайта.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 6 марта 2010, 20:07 [#25]:
Ну таки чо? Доделал? Заработало? Чо молчишь?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
BloodVIRUS (статус: Посетитель), 6 марта 2010, 20:15 [#26]:
Ломаю голову. Да заработало, НО...
Если mp3 файл был ассоциирован WMP12, то программа переассоциирует... а если было через свойства указанно открыть с помощью WMP12 то мой программа безсильна... все ключи в реестре создаются, все норм, но открывается всеравно через WMP12....
|
|
BloodVIRUS (статус: Посетитель), 6 марта 2010, 20:24 [#27]:
Теперь в .mp3 только 1н ключ в котором только это
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.mp3]
@="mp3file"
все остальное в mp3file находится...
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\mp3file]
@="mp3 media file"
[HKEY_CLASSES_ROOT\mp3file\DefaultIcon]
@="C:\\Programing\\Плеер\\New player powered bass 2.4\\Ready\\Player.exe,1"
[HKEY_CLASSES_ROOT\mp3file\Shell]
[HKEY_CLASSES_ROOT\mp3file\Shell\Open]
[HKEY_CLASSES_ROOT\mp3file\Shell\Open\Command]
@="\"C:\\Programing\\Плеер\\New player powered bass 2.4\\Ready\\Player.exe\" \"%1\""
|
|
min@y™ (статус: Доктор наук), 6 марта 2010, 20:28 [#28]:
Цитата (BloodVIRUS):
Теперь в .mp3 только 1н ключ в котором только это
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.mp3] @="mp3file"
все остальное в mp3file находится...
Вот теперь всё правильно. Так и быть должно.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
BloodVIRUS (статус: Посетитель), 6 марта 2010, 20:30 [#29]:
Вооот, самое что ломает голову, ВСЕ РАВНО mp3 файл открывается не моим плеером...
|
|
min@y™ (статус: Доктор наук), 6 марта 2010, 20:41 [#30]:
Цитата (BloodVIRUS):
Вооот, самое что ломает голову, ВСЕ РАВНО mp3 файл открывается не моим плеером...
Поищи в реестре запись от AIMP и посмотри, что у него там.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
BloodVIRUS (статус: Посетитель), 6 марта 2010, 20:54 [#31]:
AIMP у меня вообще там нет .. у меня wmp12 открывает (windows media player 12), мне вот что написали.. может чем то поможет..
Lt.RAT (22:16:41 6/03/2010)
в реестр заглядывал ?)
там есть open, edit, play ключевые слова
уверен что используешь все из них
Lt.RAT (22:17:25 6/03/2010)
если у тебя только open занимается, а у wmp занят play
то play приоритетнее open, и будет запускатья wmp в обход твоего
Lt.RAT (22:18:22 6/03/2010)
блин там разные уровни привязки
Lt.RAT (22:18:33 6/03/2010)
одно расширение может быть привязано на разные приложения
Lt.RAT (22:18:51 6/03/2010)
Open - одним
play - Другим
print - третим
от wmp12 удалил все разделы, и все равно им открывается..
|
|
min@y™ (статус: Доктор наук), 6 марта 2010, 21:07 [#32]:
Цитата (BloodVIRUS):
от wmp12 удалил все разделы, и все равно им открывается..
Теперь удали wmp12 и посмотри, что будет.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
BloodVIRUS (статус: Посетитель), 6 марта 2010, 21:08 [#33]:
его нельзя удалить) это стандартная программа виндоус ...
|
|
min@y™ (статус: Доктор наук), 6 марта 2010, 21:12 [#34]:
Цитата (BloodVIRUS):
его нельзя удалить
Уверен?
Поставь тогда WinAMP и посмотри в реестре, как он переключит ассоциацию на себя.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
BloodVIRUS (статус: Посетитель), 6 марта 2010, 21:30 [#35]:
Фига се скока на винампе..
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Winamp.File.MP3]
@="MPEG Layer 3 Audio File"
[HKEY_CLASSES_ROOT\Winamp.File.MP3\DefaultIcon]
@="C:\\Program Files (x86)\\Winamp\\winamp.exe,1"
[HKEY_CLASSES_ROOT\Winamp.File.MP3\shell]
@="Play"
[HKEY_CLASSES_ROOT\Winamp.File.MP3\shell\Enqueue]
@="&Добавить в список Winamp"
[HKEY_CLASSES_ROOT\Winamp.File.MP3\shell\Enqueue\command]
@="\"C:\\Program Files (x86)\\Winamp\\winamp.exe\" /ADD \"%1\""
[HKEY_CLASSES_ROOT\Winamp.File.MP3\shell\Enqueue\DropTarget]
"Clsid"="{77A366BA-2BE4-4a1e-9263-7734AA3E99A2}"
[HKEY_CLASSES_ROOT\Winamp.File.MP3\shell\ListBookmark]
@="Добавить в список &закладок Winamp"
[HKEY_CLASSES_ROOT\Winamp.File.MP3\shell\ListBookmark\command]
@="\"C:\\Program Files (x86)\\Winamp\\winamp.exe\" /BOOKMARK \"%1\""
[HKEY_CLASSES_ROOT\Winamp.File.MP3\shell\open]
@=""
[HKEY_CLASSES_ROOT\Winamp.File.MP3\shell\open\command]
@="\"C:\\Program Files (x86)\\Winamp\\winamp.exe\" \"%1\""
[HKEY_CLASSES_ROOT\Winamp.File.MP3\shell\open\DropTarget]
"Clsid"="{46986115-84D6-459c-8F95-52DD653E532E}"
[HKEY_CLASSES_ROOT\Winamp.File.MP3\shell\Play]
@="&Воспроизвести в Winamp"
[HKEY_CLASSES_ROOT\Winamp.File.MP3\shell\Play\command]
@="\"C:\\Program Files (x86)\\Winamp\\winamp.exe\" \"%1\""
[HKEY_CLASSES_ROOT\Winamp.File.MP3\shell\Play\DropTarget]
"Clsid"="{46986115-84D6-459c-8F95-52DD653E532E}"
|
|
BloodVIRUS (статус: Посетитель), 6 марта 2010, 21:36 [#36]:
и все равно после указания в .mp3 на это [HKEY_CLASSES_ROOT\mp3file]
открывается винамп....
|
|
min@y™ (статус: Доктор наук), 6 марта 2010, 21:47 [#37]:
Цитата (BloodVIRUS):
и все равно после указания в .mp3 на это [HKEY_CLASSES_ROOT\mp3file]
открывается винамп....
А в HKEY_CLASSES_ROOT\.mp3 сейчас что?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
BloodVIRUS (статус: Посетитель), 6 марта 2010, 21:53 [#38]:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.mp3]
@="mp3file"
так ведь не бывает...
|
|
BloodVIRUS (статус: Посетитель), 7 марта 2010, 10:19 [#39]:
Проэксперементировал..
Если создать новое расширение .fak, то им можно спокойно вышеуказанным кодом управлять, менять иконки, ассоциировать, диссоциировать, творить с ним любые действия, но если дело касается .mp3 который используется в WMP 12 или в WinAmp е, то после моей ассоциации у .mp3 не меняется даже иконка.. на .mp3 указана моя ветка с mp3file, в mp3file все так как должно быть, но открывается не мой плеер...
|
|
min@y™ (статус: Доктор наук), 7 марта 2010, 10:39 [#40]:
Значит, не все настройки учтены. Ищи в реестре строку winamp.exe, где она ещё встречается.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Страницы: [« Предыдущая] [1] [2] [3] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|