Mam problem - chciałbym skojarzyć rozszerzenie z moim programem (tzn. chciałbym żeby to prgoram mógł je ze soba skojarzyć :)). Zacząłem już pracować nad tym, aby program sam wprowadzał odpowiednie do rejestru, ale:
-nie wiem czy to zadziała, i czy sobie nie rozwale rejestru (nie mówiąc już o potencjalnych użytkownikach programu :))
-nie wiem, czy to, co napisze działałoby pod np. WinXP (mam 98)
Dlatego mam pytanie: czy w Delphi jest jakiś sposób, aby zrobić to automatycznie?
0
0
musisz pogrzebac w rejestrze.
boisz sie czy nie rozwalisz sobie rejestru?.....
a co za problem zrobic sobie kopie zapasowa? (bezpiecznestwa)
poza tym kontrolujac jedno roszerzeni nie rozwalisz calego rejstru, najwyzej skojarzeni z tym jednym rozszerzeniem.
co do roznic. nie mam 98 wiec nie wiem jak to tam wyglada, lecz sodze ze jest to podobne.
W localmachine>"roszerzenie"+file>shellexecute czy ajkos tak i wpisujesz odpowidnia wartosc (czyli sciezke do twego programu)
0
procedure TGlowna.PowiazanieClick(Sender: TObject);
begin
if Powiazanie.Checked then
begin
Reg := TRegistry.Create; // otworz rejestr
try
try
Reg.RootKey := HKEY_CLASSES_ROOT; // odpowiedni klucz otworz :)
Reg.OpenKey( // Utworz klucz
'.kon', True);
Reg.WriteString('', 'KonFile'); // dodaj typ klucza
Reg.CloseKey; // zamknij klucz
Reg.OpenKey( // stworz klucz oznaczajacy ikone
'konfile\DefaultIcon', True);
Reg.WriteString('', Application.ExeName + ',0');
Reg.CloseKey;
Reg.OpenKey( // stworz kolejny...
'konfile\shell\open\command', True); // akcja po nacisnieciu
Reg.WriteString('','"'+Application.ExeName+'" "%1"');// wpisz sciezke programu
Reg.CloseKey;
Reg.OpenKey(
'konfile\shell\Edytuj', True); // stworz nowe pozycje - Edyuj
Reg.WriteString('', 'Otwórz w programie...'); // tekst pozycji
Reg.CloseKey;
Reg.OpenKey( // stworz akcje po nacisnieciu
'konfile\shell\Edytuj\command', True);
Reg.WriteString('', '"' + Application.ExeName + '" "%1"'); // dopisz sciezke programu
except
raise Exception.Create('Błąd! Wystąpił błąd wzwiązany z rejestrem!');
end;
finally
Reg.Free;
end;
end else
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.DeleteKey('.kon');
Reg.DeleteKey('konfile');
finally
Reg.Free;
end;
end;
end;
Ja używam takiego kodu. Zapożyczony z jakiegoś programu.