Тема: ListBox, PlayList
Показать сообщение отдельно
  #7  
Старый 18.07.2007, 04:09
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

И ответ на последний вопрос:

1. Добавление пункта в меню проводника.
Код:
uses Registry;
...
var
  Reg: Tregistry;
begin

  // добавление пункта в меню проводника
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CLASSES_ROOT;
    // в след. строке можно вместо * указать какой-нибудь определенный тип
    if Reg.OpenKey('\*\shell\Моя прога\command', True) then
    begin
      Reg.WriteString('','"' + ParamStr(0) + '" "%1"');
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
  end;

  // отмена
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CLASSES_ROOT;
    Reg.DeleteKey('\*\shell\Моя прога\');
  finally
    Reg.Free;
  end;
end;

2. Зарегистрировать свое разрешение.

Код:
uses Registry;

{©Drkb v.3(2007): www.drkb.ru, ®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com}

procedure RegisterFileType(FileType,FileTypeName, Description,ExecCommand:string);
begin
  if (FileType='') or (FileTypeName='') or (ExecCommand='') then exit;
  if FileType[1]<>'.' then FileType:='.'+FileType;
  if Description='' then Description:=FileTypeName;
  with Treginifile.create do
  try
    rootkey := hkey_classes_root;
    writestring(FileType,'',FileTypeName);
    writestring(FileTypeName,'',Description);
    writestring(FileTypeName+'\shell\open\command','',ExecCommand+' "%1"');
  finally
    free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  RegisterFileType('txt','TxtFile', 'Plain text','notepad.exe');
end;

Еще один пример:

Сначала, естественно, объявляем в uses модуль Registry.
Код:
uses
 Registry;
Затем в публичных объявлениях объявляем процедуру регистрации нового типа файлов:
Код:
public
{ Public declarations }
  procedure RegisterFileType(ext: string; FileName: string);
Описываем её так:
Код:
procedure TForm1.RegisterFileType(ext: string; FileName: string);
var
  reg: TRegistry;
begin
  reg:=TRegistry.Create;
  with reg do
  begin
   RootKey:=HKEY_CLASSES_ROOT;
   OpenKey('.'+ext,True);
   WriteString('',ext+'file');
   CloseKey;
   CreateKey(ext+'file');
   OpenKey(ext+'file\DefaultIcon',True);
   WriteString('',FileName+',0');
   CloseKey;
   OpenKey(ext+'file\shell\open\command',True);
   WriteString('',FileName+' "%1"');
   CloseKey;
   Free;
  end;
end;

Ну а по нажатию какого-нибудь батона регистрируем!
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  RegisterFileType('DelphiWorld', Application.ExeName);
end;
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием