Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2011, 03:30   #1
Кристинка89
Форумчанин
 
Регистрация: 09.02.2011
Сообщений: 163
Вопрос Ассоциация файлов с программой

Всем привет. Скиньте пожалуйста исходник где показан пример ассоциации текстовых файлов с программой.. очень нужно в поиске которые нашла варианты не работают
Кристинка89 вне форума Ответить с цитированием
Старый 02.08.2011, 03:57   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

HKEY_CLASSES_ROOT заменить на HKEY_CURRENT_USER\Software\Classes.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 02.08.2011, 08:20   #3
Кристинка89
Форумчанин
 
Регистрация: 09.02.2011
Сообщений: 163
По умолчанию

это исходник что ли? что надо заменить я и без вас поняла
Кристинка89 вне форума Ответить с цитированием
Старый 02.08.2011, 12:21   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Вооон там внизу этой страницы есть раздел Похожие темы, а вот там как раз и готовый код присутствует...
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 02.08.2011, 23:40   #5
Кристинка89
Форумчанин
 
Регистрация: 09.02.2011
Сообщений: 163
По умолчанию

Да ну вас............ я видела это все и поэтому исходник попросила потому что особо не разбираюсь в этом.. Если Вы не знаете то уж лучше молчать умники нашлись тут
Кристинка89 вне форума Ответить с цитированием
Старый 02.08.2011, 23:53   #6
HOOCH94
Пользователь
 
Регистрация: 08.11.2010
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Кристинка89 Посмотреть сообщение
Да ну вас............ я видела это все и поэтому исходник попросила потому что особо не разбираюсь в этом.. Если Вы не знаете то уж лучше молчать умники нашлись тут
Попробую помочь Вам :

Код:
Uses  ShlObj;
procedure TForm1.btn1Click(Sender: TObject);
begin
SHChangeNotify(SHCNE_ALLEVENTS, SHCNF_IDLIST, nil, nil);
end;
упс, не дочитал топик.. но я думаю в дальнейшем вам может пригодится этот код, это обновление ассоциаций, т.е чтобы без перезагрузки у ассоциируемых файлов появилась иконка вашего приложения.

Последний раз редактировалось HOOCH94; 03.08.2011 в 00:06.
HOOCH94 вне форума Ответить с цитированием
Старый 03.08.2011, 01:03   #7
HOOCH94
Пользователь
 
Регистрация: 08.11.2010
Сообщений: 21
По умолчанию

Я думаю это сорец(автор которого : Человек_Борща) вам будет полезен:
http://rghost.net/16705261

Листинг на всякий случай, работает 100%

Код:

unit Unit1;

interface

uses
  Windows, Messages, Classes, Controls, Forms,
  Registry, StdCtrls, SysUtils;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const
  TestExt = '.hel'; // расширение которое вам надо
  TestExtDesc = 'HLREL'; // описание файла 
  TestContextBtnCaption = 'Открыть при помощи TestApp'; // Текст кнопки в контекстном меню 

  {-------------------------------------------------------------------------------
    Процедура: RegFileExt - Регистрирует новый тип файла в системе
    Автор:    Человек_Борща
    Дата:  2011.03.07
    Входные параметры: Ext, ExtDesc, ContextBtnText: string
    Результат:    Нет
    Ext - Расширение с точкой(например: .hel)
    ExtDesc - Описание файла(Например: HRLEL (Сокрашённая аббревиатура))
    ContextBtnText - Текст кнопки контекстного меню
  -------------------------------------------------------------------------------}

procedure RegFileExt(Ext, ExtDesc, ContextBtnText: string);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  //Если расширение или описание на заданы значит Error
  if (Trim(Ext) = '') or (Trim(ExtDesc) = '') then
    Exit
  else
  begin
    try
      //Регистрация нового типа файла
      Reg.RootKey := HKEY_CLASSES_ROOT;
      //Регистрируем расширение
      Reg.OpenKey(Ext, True); //.ER
      Reg.WriteString('', ExtDesc); //HLREL
      Reg.CloseKey;

      //Регестрируем иконку для файлов с этим расширением
      Reg.OpenKey(ExtDesc + '\DefaultIcon', True);
      Reg.WriteString('', ParamStr(0) + ',0');
      Reg.CloseKey;

      //Проверка на длинну
      if not (Trim(ContextBtnText) = '') then
      begin
        //Кнопка в контекстное меню
        Reg.OpenKey(ExtDesc + '\shell\Open', True);
        Reg.WriteString('', ContextBtnText);
        Reg.CloseKey;
      end;

      //Шелл-запуск
      Reg.OpenKey(ExtDesc + '\shell\Open\Command', True);
      Reg.WriteString('', ParamStr(0) + ' "%1"');
      Reg.CloseKey;
    finally
      Reg.Free;
    end;
    //После регистрации расширения обновляем иконки(Нахрен нам перезапск ПК или килл explorer'а?)=)
    SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0);
  end;
end;

{-------------------------------------------------------------------------------
  Процедура: UnRegFileExt - Удаляет указаный тип файла из системы
  Автор:    Человек_Борща
  Дата:  2011.03.07
  Входные параметры: Ext, ExtDesc: string
  Результат:    Нет
  Ext - Расширение с точкой(например: .hel)
  ExtDesc - Описание файла(Например: HRLEL (Сокрашённая аббревиатура))
-------------------------------------------------------------------------------}

procedure UnRegFileExt(Ext, ExtDesc: string);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  //Если расширение или описание на заданы значит Error
  if (Trim(Ext) = '') or (Trim(ExtDesc) = '') then
    Exit
  else
  begin
    try
      //Регистрация нового типа файла
      Reg.RootKey := HKEY_CLASSES_ROOT;
      Reg.DeleteKey(Ext);
      Reg.DeleteKey(ExtDesc);
    finally
      Reg.Free;
    end;
    //После регистрации расширения обновляем иконки(Нахрен нам перезапск ПК или килл explorer'а?)=)
    SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if ParamCount > 0 then
    Memo1.Lines.LoadFromFile(ParamStr(1)); //загружаем переданный шеллом файл в программу!
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  RegFileExt(TestExt, TestExtDesc, TestContextBtnCaption);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  UnRegFileExt(TestExt, TestExtDesc);
end;

end.
Говорим спасибо за сорец и комментарии форумчанину с ником : Человек_Борща

Последний раз редактировалось HOOCH94; 03.08.2011 в 01:11.
HOOCH94 вне форума Ответить с цитированием
Старый 03.08.2011, 16:31   #8
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от HOOCH94 Посмотреть сообщение
работает 100%
http://www.gunsmoker.ru/2010/05/90.html - см. пример 3. И вообще целиком вдумчиво почитай.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 04.01.2015, 11:21   #9
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Добрый день! Всех с наступившим новым годом!
Подниму эту тему, дабы не создавать новую.
Я применил код из поста №7, но у меня не срабатывает код и ругается выдавая сообщение:
Работаю в Delphi XE в Windows 8.1
Изображения
Тип файла: png Безымянный.png (13.2 Кб, 115 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 04.01.2015, 11:29   #10
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

А надо было читать сообщение #8
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ассоциация Файлов digital-stream Мультимедиа в Delphi 3 27.11.2014 23:34
[Проблема]Создание нового типа файла и ассоциация его с программой Человек_Борща Общие вопросы Delphi 5 07.03.2011 21:35
Ассоциация файлов Renat21 Общие вопросы Delphi 1 04.02.2011 20:35
Ассоциация файлов со своей программой dmitriegorovih Общие вопросы Delphi 7 21.08.2010 12:41
ассоциация файлов с приложением TaTT DoGG Общие вопросы .NET 3 15.03.2009 18:21