Ĺadny brzuch
* Nasz program jest aktualnie otwarty, Jest to edytor tekstu. Aha i Pliki *.txt sa skojarzone z naszym programem. W jaki sposob, po otworzeniu pliku tekstowego, dany plik zostanie otwarty w oknie programu, ktore juz jest (ladowanie pliku = procedura LadujPlik(sciezka:string);). Czyli nie otworzy sie kolejne okno, lecz jak w otwartym juz oknie, odpalic nowy plik?
Chyba to poplatalem. Chce, aby bylo jak w Muzycznym WinAmpie - gra sobie muzyczka. Jak otworze inny plik muzyczny, to zamiast tego co byl, odgrywany jest nowy (bez otwierania kolejnego okna).
Jak to zrobic???
Przy uruchamianiu programu sprawdzić czy inna instancja tego programu jest już uruchomiona i przesłać tej uruchomionej instancji message z nazwą pliku do otwarcia a druga kopia niech się zamknie.
Update:
O tutaj jest kupa komponentów do sprawdzania czy jedna instancja jest uruchomiona, ściągnij i popatrz w ich kod źródłowy.
Użytkownik Uno edytował ten post 28 wrzesień 2005, 16:10
A jak moge przeslac istancji (?) aby wykonala polecenie? Wiem, jak sprawdzic, czy program jest juz uruchomiony (juz kiedys na tym forum o to bylo troche postow..).
Ale co dalej?
Ale co dalej?
A na przykład w ten sposób przesłac nazwę pliku do uruchomienia. I w procedurze przechwytującej komunikat zamknąć aktualnie otwarty plik i załadować nowy (ten, którego nazwę i ścieżkę w komunikacie przesłaliśmy).
ok.
Ale kod na sprawdzenie czy jest forma mam w DPRce i gdy odwoluje sie do Form, to kompilacja OK, ale juz podczas dzialania programu jest ERROR. wiec zapewne nie mam dostepu do foremek.
Jak pojde do domu, to pokombinuje z tymi kodami, ktore mam od Ciebie i z Torry.net
dobra. Nic nie kumam z tych kodow. Czy jest ktos w stanie mi pomoc? kody mile widziane ;)
ok.
Ale kod na sprawdzenie czy jest forma mam w DPRce i gdy odwoluje sie do Form, to kompilacja OK, ale juz podczas dzialania programu jest ERROR. wiec zapewne nie mam dostepu do foremek.
Jak pojde do domu, to pokombinuje z tymi kodami, ktore mam od Ciebie i z Torry.net
dobra. Nic nie kumam z tych kodow. Czy jest ktos w stanie mi pomoc? kody mile widziane ;)
Wchodzisz na zakładke system i wstawiasz dwa komponenty:
-TDdeServerConv
-TDdeServerItem
Procedura OnExecuteMacro komponentu TDdeServerConv:
procedure TForm.DDEServerConv1ExecuteMacro(Sender: TObject; Msg: TStrings); begin{ tutaj jest kombinacja bo zawartosc Msg wyglada tak "[open(c:\plik.pas)]" } if Pos('open', Msg[0]) > 0 then LadujPlik(Copy(Msg[0], 7, Length(Msg[0]) - 8)); end;
W komponencie TDdeServerItem ustawiasz ServerConv na DdeServerConv.
UWAGA !!
Klucze w rejestrze muszą wyglądać następująco:
\HKEY_CLASSES_ROOT\.txt bez zmian
\HKEY_CLASSES_ROOT\textfile wartość domyśla może byś dowolna
\HKEY_CLASSES_ROOT\textfile\DefaultIcon wartość domyślna to adres ikony
\HKEY_CLASSES_ROOT\textfile\Shell wartość domyślna pusta
\HKEY_CLASSES_ROOT\textfile\Shell\Open j.w. pusta
\HKEY_CLASSES_ROOT\textfile\Shell\Open\Command nazwa aplikacji + %1 np. "C:\Program Files\Program\Program.exe""%1"
\HKEY_CLASSES_ROOT\textfile\Shell\Open\ddeexec wartość domyślna [open(%1)]
\HKEY_CLASSES_ROOT\textfile\Shell\Open\ddeexec\Application wartość domyślna nazwa aplkacjy bez końcówki *.exe np. PROGRAM, NOTANIK itp...
Jak czegoś nierozumiesz napisz PW :P
Użytkownik Kikiz edytował ten post 03 październik 2005, 18:18
I to mi nie chodzi. Mam win98. Czy ktos pomoze???
A program który Ci wysłałem też niedziała ? Hmm wpradzie testowany na WinXP ale jak bawiłem się czymś takim i przyniosłem do budy to chodziło spokojnie na Win 98 i 2k.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Chyba to poplatalem. Chce, aby bylo jak w Muzycznym WinAmpie - gra sobie muzyczka. Jak otworze inny plik muzyczny, to zamiast tego co byl, odgrywany jest nowy (bez otwierania kolejnego okna).
Jak to zrobic???
Przy uruchamianiu programu sprawdzić czy inna instancja tego programu jest już uruchomiona i przesłać tej uruchomionej instancji message z nazwą pliku do otwarcia a druga kopia niech się zamknie.
Update:
O tutaj jest kupa komponentów do sprawdzania czy jedna instancja jest uruchomiona, ściągnij i popatrz w ich kod źródłowy.
Użytkownik Uno edytował ten post 28 wrzesień 2005, 16:10
A jak moge przeslac istancji (?) aby wykonala polecenie? Wiem, jak sprawdzic, czy program jest juz uruchomiony (juz kiedys na tym forum o to bylo troche postow..).
Ale co dalej?
Ale co dalej?
A na przykład w ten sposób przesłac nazwę pliku do uruchomienia. I w procedurze przechwytującej komunikat zamknąć aktualnie otwarty plik i załadować nowy (ten, którego nazwę i ścieżkę w komunikacie przesłaliśmy).
ok.
Ale kod na sprawdzenie czy jest forma mam w DPRce i gdy odwoluje sie do Form, to kompilacja OK, ale juz podczas dzialania programu jest ERROR. wiec zapewne nie mam dostepu do foremek.
Jak pojde do domu, to pokombinuje z tymi kodami, ktore mam od Ciebie i z Torry.net
dobra. Nic nie kumam z tych kodow. Czy jest ktos w stanie mi pomoc? kody mile widziane ;)
ok.
Ale kod na sprawdzenie czy jest forma mam w DPRce i gdy odwoluje sie do Form, to kompilacja OK, ale juz podczas dzialania programu jest ERROR. wiec zapewne nie mam dostepu do foremek.
Jak pojde do domu, to pokombinuje z tymi kodami, ktore mam od Ciebie i z Torry.net
dobra. Nic nie kumam z tych kodow. Czy jest ktos w stanie mi pomoc? kody mile widziane ;)

Wchodzisz na zakładke system i wstawiasz dwa komponenty:
-TDdeServerConv
-TDdeServerItem
Procedura OnExecuteMacro komponentu TDdeServerConv:
procedure TForm.DDEServerConv1ExecuteMacro(Sender: TObject; Msg: TStrings); begin{ tutaj jest kombinacja bo zawartosc Msg wyglada tak "[open(c:\plik.pas)]" } if Pos('open', Msg[0]) > 0 then LadujPlik(Copy(Msg[0], 7, Length(Msg[0]) - 8)); end;
W komponencie TDdeServerItem ustawiasz ServerConv na DdeServerConv.
UWAGA !!
Klucze w rejestrze muszą wyglądać następująco:
\HKEY_CLASSES_ROOT\.txt bez zmian
\HKEY_CLASSES_ROOT\textfile wartość domyśla może byś dowolna
\HKEY_CLASSES_ROOT\textfile\DefaultIcon wartość domyślna to adres ikony
\HKEY_CLASSES_ROOT\textfile\Shell wartość domyślna pusta
\HKEY_CLASSES_ROOT\textfile\Shell\Open j.w. pusta
\HKEY_CLASSES_ROOT\textfile\Shell\Open\Command nazwa aplikacji + %1 np. "C:\Program Files\Program\Program.exe""%1"
\HKEY_CLASSES_ROOT\textfile\Shell\Open\ddeexec wartość domyślna [open(%1)]
\HKEY_CLASSES_ROOT\textfile\Shell\Open\ddeexec\Application wartość domyślna nazwa aplkacjy bez końcówki *.exe np. PROGRAM, NOTANIK itp...
Jak czegoś nierozumiesz napisz PW :P
Użytkownik Kikiz edytował ten post 03 październik 2005, 18:18
I to mi nie chodzi. Mam win98. Czy ktos pomoze???
A program który Ci wysłałem też niedziała ? Hmm wpradzie testowany na WinXP ale jak bawiłem się czymś takim i przyniosłem do budy to chodziło spokojnie na Win 98 i 2k.