![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите, как связать свой тип файлов к своей программе?
mmms © (2007-07-16 14:18:00)Есть свой формат файла, хотелось бы что бы в контексном меню проводника при нажатии правой клавиши мыши появлялся доп. пункт, при нажатии на который программа получала вызов + в качестве переметра - имя файла. Подскажите? Сморел в Delphi World, но что то ничего не нашел.
mmms (2007-07-16 16:12:00) [1]
[1] asdddd (16.07.07 14:23)
[2] Dib@zol © (16.07.07 14:26)
Спасибо за код, премного благодарен!
Dib@zol (2007-07-16 14:26:00) [2]procedure TryIntegrate;
const
HKCR = HKEY_CLASSES_ROOT;
FileNick = 'File_type';
fileType = 'Файл для моей проги!!!';
open = 'Атткрыть!';
ext = '.123';
iconNum = '0';
var
HK, TK : HKEY;
lps : PChar;
begin
if RegOpenKey(HKCR, ext, HK)<>0 then begin // No key!
RegCreateKey(HKCR, ext, HK);
RegSetValue(HK, nil, REG_SZ, FileNick, length(FileNick));
RegCloseKey(HK);
RegCreateKey(HKCR, FileNick, HK);
RegSetValue(HK, nil, REG_SZ, fileType, length(fileType));
RegCreateKey(HK, 'DefaultIcon', TK);
lps:=PChar(ParamStr(0)+','+iconNum);
RegSetValue(TK, nil, REG_SZ, lps, length(lps));
RegCloseKey(TK);
RegCreateKey(HK, 'shell', TK);
RegCreateKey(TK, 'open', TK);
RegSetValue(TK, nil, REG_SZ, open, length(open));
RegCreateKey(TK, 'command', TK);
lps:=PChar(ParamStr(0)+' %1');
RegSetValue(TK, nil, REG_SZ, lps, length(lps));
RegCloseKey(TK);
RegCloseKey(HK);
end;
end;
asdddd (2007-07-16 14:23:00) [3]uses
Registry;
procedure AddFileMenue(FilePrefix, Menue, Command: string);
var
reg: TRegistry;
typ: string;
begin
reg := TRegistry.Create;
with reg do
begin
RootKey := HKEY_CLASSES_ROOT;
OpenKey('.' + FilePrefix, True);
typ := ReadString('');
if typ = '' then
begin
typ := Fileprefix + 'file';
WriteString('', typ);
end;
CloseKey;
OpenKey(typ + '\shell\' + Menue + '\command', True);
WriteString('', command + ' "%1"');
CloseKey;
Free;
end;
end;
procedure DeleteFileMenue(Fileprefix, Menue: string);
var
reg: TRegistry;
typ: string;
begin
reg := TRegistry.Create;
with reg do
begin
RootKey := HKEY_CLASSES_ROOT;
OpenKey('.' + Fileprefix, True);
typ := ReadString('');
CloseKey;
OpenKey(typ + '\shell', True);
DeleteKey(Menue);
CloseKey;
Free;
end;
end;
{ Example / Beispiel:}
procedure TForm1.Button1Click(Sender: TObject);
begin
{ Register the Menuepoint: }
AddFileMenue('rtf', 'Edit with Notepad', 'C:\Windows\system\notepad.exe');
{
If you now click with the right mousebutton on a *.rtf-file then
you can see a Menuepoint: "Edit with Notepad".
When Click on that point Notepad opens the file.
Wenn man nun mit der rechten Maustaste im Explorer auf eine *.rtf-Datei Clickt,
dann erscheint dort der Menuepunkt "Edit with Notepad".
Beim Clicken darauf, цffnet Notepad diese Datei.
}
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
{
Unregister the Menuepoint / Undo your changes in the Registry:
Lцscht den Menuepunkt wieder aus der Registry:
}
DeleteFileMenue('rtf', 'Edit with Notepad');
end;
Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php