FAQ » Pliki

Jak zmusić pliki, aby otwierały się w istniejącej kopii programu

  • 3 komentarze
  • 529 odsłon
  • Oceń ten tekst jako pierwszy
Co tydzień na forum pojawia się mniej więcej takie pytanie. Odpowiedź jest prosta i wymaga pogrzebania w helpie. Oto ona:

1. Piszesz procedurę rejestrująca rozszerzenie:

procedure Zarejestruj(Rozszerzenie, Sciezka: string);
var
  Reg: TRegistry;
  root: string;
begin
  Reg:=TRegistry.Create;
  Reg.RootKey:=HKEY_CLASSES_ROOT;
  Reg.OpenKey('.' + Rozszerzenie, True);
  Reg.WriteString('', Rozszerzenie + '_file');
  root:='' + Rozszerzenie + '_file\shell\open';
  Reg.OpenKey(root + '\command', true);
  Reg.WriteString('', sciezka);
  Reg.OpenKey(root + '\ddeexec', True);
  Reg.WriteString('', '[open(%1)]');
  Reg.OpenKey(root + '\ddeexec\Application', True);
  Reg.WriteString('', 'MojProgram');
  Reg.OpenKey(root + '\ddeexec\Topic', True);
  Reg.WriteString('', 'MojProgram'); 
  Reg.Free
end; 


2. Wstaw na formę komponent TDDEServerConv i nazwij go MojProgram (tak samo jak string, który wrzucałeś powyżej do rejestru).

3. Wrzuc TDDEServerItem i ustaw ServerConv na MojProgram.

4. Teraz zdarzenie MojProgram.OnExecuteMacro:
begin
  s:=Msg[0];
  if Pos('open', s) > 0 then begin
    s:=Copy(s, 7, Length(s) - 9);
    //teraz otwórz plik s
  end
end;

3 komentarze

fatalerror 2005-02-05 22:59

a jak chciałbym żeby do TImage załadować jpeg'a, to co mam zrobić

Vogel 2003-07-16 11:02

1. Doesn't work a nie Not work
2. Działa, sam z tego korzystałem

Sheitar 2003-07-16 01:54

Not work :/

[Dopisane]
Me nie znać angielski too good to speak smoothly :P
Musiałem trochę pozmeiniać żeby u mnie działało, otóż w kluczu \ddeexec\Application zamiast zapisywać MojProgram czy jak kto wymyśli trzeba by dać to co jest pod Application.Title tak myślę, bo jak robiłem na standartowym nazewnictwie Delphi [Unit1, Project1 itp] to z MojProgram wywalało błędy a jak dałem tam Project1 to odrazu działa :] Dobra trochę zamotane, ale komu nie będzie działała Vogelowa wersja to będzie wiedział czego się uczepić :P