И ответ на последний вопрос:
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.
Затем в публичных объявлениях объявляем процедуру регистрации нового типа файлов:
Код:
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;