Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ассоциация файлов, К плееру 
:(
    Опции темы
Racer
  Дата 11.8.2009, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



Здравствуйте, форумчане.

Я делаю плеер и хочу добавить ассоциацию файлов которые он поддерживает к нему. Тоесть при нажатии на *.mp3 и так далее открывается мой плеер и весело играет тот музончик. Я изготовил другой проект для испытаний. Сначала добавил в реестр данные о новом формате (я испытывал методу на новом формате *.myext). 
Код

procedure TForm1.btn1Click(Sender: TObject);
var
R : TRegIniFile;
begin
R := TRegIniFile.Create('');
with R do begin
RootKey := HKEY_CLASSES_ROOT;
WriteString('.myext','','MyExt');
WriteString('MyExt','','Some description of MyExt files');
WriteString('MyExt\DefaultIcon','','C:\MyApp.Exe,0');
WriteString('MyExt\Shell','','This_Is_Our_Default_Action');
WriteString('MyExt\Shell\First_Action','','This is our first action');
WriteString('MyExt\Shell\First_Action\command','',
'D:\Project_Reg.Exe /LotsOfParamaters %1');
WriteString('MyExt\Shell\This_Is_Our_Default_Action','',
'This is our default action');
WriteString('MyExt\Shell\This_Is_Our_Default_Action\command',
'','D:\Project_Reg.Exe %1');
WriteString('MyExt\Shell\Second_Action','','This is our second action');
WriteString('MyExt\Shell\Second_Action\command',
'','D:\Project_Reg.Exe /TonsOfParameters %1');
Free;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 if (paramstr(1) <> '') then ShowMessage(paramstr(1));
end;


Но при открытии нескольких файлов такого типа запускается 2 копии моего приложения. Как это исправить?
PM MAIL   Вверх
Keeper89
Дата 11.8.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Прочитайте вот это (может где и на русском есть, не искал):
Смысл всего в нескольких шагах:
1) Создании мьютекса при старте первого экземпляра и регистрация определенного сообщения для передачи пути к файлу;
2) При запуске второго экземпляра - определение, что приложение уже запущено, передача зарезервированного сообщения с путем к файлу и закрытие второго экземпляра.

З.Ы. Примеры есть в приведенных ссылках.

Это сообщение отредактировал(а) Keeper89 - 11.8.2009, 12:16


--------------------
PM MAIL WWW   Вверх
Racer
Дата 11.8.2009, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



А можно теперь мне по русски? Вроде все понятно, но что именно делать мне? инструкцию поподробней и код, плиз, можете дать?
PM MAIL   Вверх
Keeper89
Дата 11.8.2009, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Было время, повозился - прикрепляю образец.

Это сообщение отредактировал(а) Keeper89 - 11.8.2009, 19:04

Присоединённый файл ( Кол-во скачиваний: 24 )
Присоединённый файл  MyPlayer.rar 195,31 Kb


--------------------
PM MAIL WWW   Вверх
Racer
Дата 11.8.2009, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



Спасибо, попробую потом отпишусь обязательно
PM MAIL   Вверх
sector19
Дата 25.8.2009, 05:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 24.8.2009

Репутация: нет
Всего: нет



Keeper89, Ваш пример мне очень помог! Спасибо!  smile 
PM MAIL   Вверх
Racer
  Дата 25.8.2009, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



Keeper89, у меня почему-то не получается. Скопировал все из примера, изменил только на мою форму (там, в мютексе), но когда открываю файлы через плеер то выкидывает мессагу: Access violation at adress 0051AE31in module 'Walkman.exe'. Read of adress 00000360.
Что это такое? И как исправить???

Код

program Walkman;

uses
  Forms,
  Windows,
  SysUtils,
  Messages,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2},
  Unit4 in 'Unit4.pas' {Form4},
  Unit5 in 'Unit5.pas' {Form5},
  uSenderMain in 'uSenderMain.pas';

{$R *.res}

var
  Mutex, PreviousHandle: THandle;
  i: Integer;

begin
  Mutex := CreateMutex(nil, True, 'Form1');
  if (Mutex = 0) OR (GetLastError = ERROR_ALREADY_EXISTS) then
  begin
    PreviousHandle := FindWindow('Form1', Nil);
    for i := 1 to ParamCount do
      if FileExists(ParamStr(i)) then
        SendPath(ParamStr(i), PreviousHandle);
    SetForegroundWindow(PreviousHandle);
  end
  else
  begin
   Application.Initialize;
   Application.MainFormOnTaskbar := True;
   Application.CreateForm(TForm1, Form1);
   Application.CreateForm(TForm2, Form2);
   Application.CreateForm(TForm4, Form4);
   Application.CreateForm(TForm5, Form5);
   Application.Run;
  end;
end.
 

Код

formcreate  
. . .
 for o := 1 to ParamCount do
    if FileExists(ParamStr(i)) then
      Form2.ListBox1.Items.Add(ParamStr(i));

PM MAIL   Вверх
CodeMonkey
Дата 25.8.2009, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Что такое Access Violation.

Добавлено через 2 минуты и 45 секунд
А за HKEY_CLASSES_ROOT надо бить в лицо без предупреждения. Чтоб запоминали ;)


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Racer
Дата 25.8.2009, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



Цитата

А за HKEY_CLASSES_ROOT надо бить в лицо без предупреждения. Чтоб запоминали ;)

Не понял ,это еще за что?? Я ведь просто хочу слушать музыку в своем плеере.

PM MAIL   Вверх
Racer
Дата 26.8.2009, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



Ну помогите!!!!!!!!!1 smile 
PM MAIL   Вверх
Keeper89
Дата 26.8.2009, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Цитата(Racer @  25.8.2009,  14:34 Найти цитируемый пост)
Не понял ,это еще за что?? Я ведь просто хочу слушать музыку в своем плеере.

CodeMonkey дал ссылку - почему.
Цитата(Racer @  26.8.2009,  14:30 Найти цитируемый пост)
Ну помогите!!!!!!!!!1 smile  

В какой строке выдается Access violation?


--------------------
PM MAIL WWW   Вверх
Racer
Дата 27.8.2009, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



А как мне понять в какой строке выдается Аccess violation? Если я нажимаю открыть с помощью -> плеер, тоесть не запускаю его в отладчике?
PM MAIL   Вверх
CodeMonkey
Дата 27.8.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Обработка ошибок.

Вы бы сперва среду освоили, отладчик хотя бы по минимуму - а уж потом писали бы программы.

Hint: Run/Parameters или Search/Goto address.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.