Jak zmusić pliki, aby otwierały się w istniejącej kopii programu
Vogel
Co tydzień na forum pojawia się mniej więcej takie pytanie. Odpowiedź jest prosta i wymaga pogrzebania w helpie. Oto ona:
- 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;
-
Wstaw na formę komponent TDDEServerConv i nazwij go MojProgram (tak samo jak string, który wrzucałeś powyżej do rejestru).
-
Wrzuc TDDEServerItem i ustaw ServerConv na MojProgram.
-
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;
a jak chciałbym żeby do TImage załadować jpeg'a, to co mam zrobić
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