|
[MMF2] Nie uruchamiaj programu więcej niż jeden raz |
| Autor |
Wiadomość |
Pisarz
Młodszy chorąży Spinacz
 
Pomógł: 2 razy Posty: 239
2677 Prestiż
|
Wysłany: 27-02-2008, 09:10 [MMF2] Nie uruchamiaj programu więcej niż jeden raz
|
|
|
Witam!
Dziś nauczę Was wprowadzać w swoich programach zabezpieczenia przeciwko uruchomieniu przez użytkownika dwóch okien programu. Jeśli jeszcze nie potrafisz jeszcze budować zdarzeń w MMF2, polecam przeczytanie rozdziału zdarzenia, lecz jeśli znasz się na MMF2 i wiesz jak konstruować zdarzenia, wystarczy spis zdarzeń.
Oto potrzebne elementy:
Kod: | Multimedia Fusion 2
Plugin "The Big Box" |
Plansza
[Jeśli nie potrafisz jeszcze budować poziomów, przeczytaj wiadomość w tej klamerce:
Kliknij prawym w wolny obszar na planszy i z rozwijanego menu wybierz Insert object, a potem wybierz ikonkę obiektu, który chcesz wstawić!]
[Jeśli nie posiadasz jeszcze obiektu The Big Box polecam pobranie paczki obiektów do MMF2 stworzonej przez Bedzia, którą znajdziesz pod tym adresem: Klik! ]
Umieszczamy obiekt The Big Box na planszy i przechodzimy do zdarzeń.
Zdarzenia:
Klikamy prawym na New Condition, potem na ikonkę z dwoma monitorami obok siebie (Special) i wybieramy z rozwijanego menu opcję Always. Klikamy prawym przyciskiem w kratkę pod ikoną obiektu The Big Box w linii z napisem Always. Z rozwijanego menu wybieramy "System", a potem "Kill a process" i wpisujemy w cudzysłowie nazwę pliku naszego programu, np. "mojagra.exe". I tak doszliśmy do zakończenia tej instrukcji.
Poniżej spis zdarzeń:
Kod: | Always>Kill process "mojagra.exe" |
Dla tych, którzy nie potrafią stworzyć tego co zawarłem w instrukcji przykład (przepraszam za nazwę pliku ) |
_________________ Czy wiesz że... jedzenie kanapki powoduje zmniejszenie jej objętości? |
|
|
|
 |
Aleks
Moderator Wilczek
 
Skype: 
Pomógł: 78 razy Posty: 636
28588 Prestiż
|
Wysłany: 27-02-2008, 12:23
|
|
|
A jeśli ktoś zmieni nazwę pliku exe i uruchomi aplikacje 2 raz?
jak ktoś chce naprawdę dobrego sposobu to wystarczy wykorzystać Instance Communicator który służy do komunikacji między aplikacjami jest on w aktualizacji F2 #247
robimy zdarzenie
Kod: | Start of frame
+ Instance Count( "Instance Communicator" ) > 1
End the application |
Aplikacja rozpoznaje uruchomienie drugiego takiego samego programu przez GUID, które generuje się w properties Instance Communicator |
_________________ ( Przystan Ocalenie | Centaurus | Skrzydlaty Pies | WWF | Nakarm Psiaka ) |
|
|
|
 |
Pisarz
Młodszy chorąży Spinacz
 
Pomógł: 2 razy Posty: 239
2677 Prestiż
|
Wysłany: 27-02-2008, 14:50
|
|
|
| Ja tam próbowałem mój trick na różnych nazwach plików i działało... |
_________________ Czy wiesz że... jedzenie kanapki powoduje zmniejszenie jej objętości? |
|
|
|
 |
Aleks
Moderator Wilczek
 
Skype: 
Pomógł: 78 razy Posty: 636
28588 Prestiż
|
|
|
|
 |
Minty
Stwórczyni omc dr fizyki
 
Pojedynki: być może
Pomogła: 259 razy Posty: 3447
33795 Prestiż
|
Wysłany: 27-02-2008, 15:50
|
|
|
Wystarczy drobna przeróbka, żeby zabezpieczyć się przed zmianą nazwy:
+ Always
> The Big Box: Kill process Appname$
Wtedy jednak powstaje efekt uboczny: zmieniając nazwę na "notepad.exe" zabija się instancje Notatnika (Można wtedy sprawdzać, czy nazwa pliku jest zgodna z tą, która powinna być.) |
|
|
|
 |
jarlfenrir
Generał brygady
 
Pomógł: 82 razy Posty: 1731
37283 Prestiż
|
Wysłany: 27-02-2008, 18:46
|
|
|
| RomanX napisał/a: | Wystarczy drobna przeróbka, żeby zabezpieczyć się przed zmianą nazwy:
+ Always
> The Big Box: Kill process Appname$
Wtedy jednak powstaje efekt uboczny: zmieniając nazwę na notepad.exe zabija się instancje Notatnika (Można wtedy sprawdzać, czy nazwa pliku jest zgodna z tą, która powinna być.) |
A jak nie jest zgodna to co? To wtedy nie wyłącza programu?
Zawsze można sperawdzic nazwę i w razie czego wywalić komunikat: "zła nazwa" i zamknąć program od razu. |
|
|
|
 |
Minty
Stwórczyni omc dr fizyki
 
Pojedynki: być może
Pomogła: 259 razy Posty: 3447
33795 Prestiż
|
Wysłany: 27-02-2008, 19:01
|
|
|
| Cytat: | | A jak nie jest zgodna to co? To wtedy nie wyłącza programu? |
Wtedy wyłącza ten, który ma złą nazwę (zwyczajnie, nie zabijając), a zanim to zrobi, wyświetli komunikat o niepoprawnej nazwie exeka. Czyli tak, jak napisałeś. |
|
|
|
 |
zetcom
Młodszy chorąży 2D Artist
 
Pojedynki: nie
Pomógł: 3 razy Posty: 231
3194 Prestiż
|
Wysłany: 11-03-2008, 23:41
|
|
|
Ja również polecam jak Aleks Wilk rozszerzenie Instance Communicator. Przede wszystkim nie potrzebny jest wtedy warunek Always, który jak nielicznym wiadomo obciąża w runtime aplikacji CPU.
Osobiście gustuję w takim kodzie:
Kod: | Run this event once
+ (negacja) This is the first instance
End the application |
|
|
|
|
 |
|
|