NukeBoards - Kreatywność przede wszystkim
FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  DownloadDownload
RejestracjaRejestracja  ZalogujZaloguj

Odpowiedz do tematu
Poprzedni temat :: Następny temat
[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 ;P )
_________________
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ż
Wysłany: 27-02-2008, 15:04   

masz racje to nie jest zależne od nazwy tylko od pliku wykonywalnego umieszczonego wewnątrz aplikacji
_________________
( Przystan Ocalenie | Centaurus | Skrzydlaty Pies | WWF | Nakarm Psiaka )
 
     
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? :D
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
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

PSK Cytaty Klikibaza - kopia wszystkich klików Klikipedia - encyklopedia o tworzeniu gier Discord KlikCzat Zaproszenie Wielkie Muzeum Klikowe

Powered by phpBB modified by Przemo © 2003 phpBB Group