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

Warning: Invalid argument supplied for foreach() in /home/romanx/public_html/nb/includes/bbcode.php on line 315

Warning: Invalid argument supplied for foreach() in /home/romanx/public_html/nb/includes/bbcode.php on line 315

Warning: usort() [function.usort]: The argument should be an array in /home/romanx/public_html/nb/includes/bbcode.php on line 913

Warning: Invalid argument supplied for foreach() in /home/romanx/public_html/nb/includes/bbcode.php on line 315

Warning: Invalid argument supplied for foreach() in /home/romanx/public_html/nb/includes/bbcode.php on line 315

Warning: Invalid argument supplied for foreach() in /home/romanx/public_html/nb/includes/bbcode.php on line 315

Warning: Invalid argument supplied for foreach() in /home/romanx/public_html/nb/includes/bbcode.php on line 315

Warning: Invalid argument supplied for foreach() in /home/romanx/public_html/nb/includes/bbcode.php on line 315

Warning: Invalid argument supplied for foreach() in /home/romanx/public_html/nb/includes/bbcode.php on line 315

Warning: Invalid argument supplied for foreach() in /home/romanx/public_html/nb/includes/bbcode.php on line 315

Warning: Invalid argument supplied for foreach() in /home/romanx/public_html/nb/includes/bbcode.php on line 315

Warning: Invalid argument supplied for foreach() in /home/romanx/public_html/nb/includes/bbcode.php on line 315

Warning: Invalid argument supplied for foreach() in /home/romanx/public_html/nb/includes/bbcode.php on line 315

Odpowiedz do tematu
Poprzedni temat :: Następny temat
[MMF2] Nie uruchamiaj programu więcej niż jeden raz
Autor Wiadomość
Pisarz 
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ń.

[b]Oto potrzebne elementy:[/b]
[code]Multimedia Fusion 2
Plugin "The Big Box"[/code]

[b]Plansza

[i][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: [URL=http://www.chomikuj.pl/Pisarz/MMF2wp1.exe]Klik![/URL] ][/i][/b]
Umieszczamy obiekt [b]"The Big Box"[/b] na planszy i przechodzimy do zdarzeń.

[b]Zdarzenia:[/b]
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.

[b]Poniżej spis zdarzeń:[/b]
[code]Always>Kill process "mojagra.exe"[/code]

[b]Dla tych, którzy nie potrafią stworzyć tego co zawarłem w instrukcji [URL=http://www.smerfikprogramist.yoyo.pl/kodeklol.mfa]przykład (przepraszam za nazwę pliku ;P)[/URL] [/b]
_________________
Czy wiesz że... jedzenie kanapki powoduje zmniejszenie jej objętości?
 
     
Aleks 
Wilczek


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
[code]Start of frame
+ Instance Count( "Instance Communicator" ) > 1
    End the application[/code]

Aplikacja rozpoznaje uruchomienie drugiego takiego samego programu przez GUID, które generuje się w properties Instance Communicator
_________________
( [URL=http://www.przystanocalenie.org/]Przystan Ocalenie[/URL] | [URL=http://www.centaurus.org.pl/]Centaurus[/URL] | [URL=http://www.skrzydlatypies.pl/]Skrzydlaty Pies[/URL] | [URL=http://www.wwf.pl/]WWF[/URL] | [URL=https://www.karmimypsiaki.pl/nakarm-psiaka]Nakarm Psiaka[/URL] )
 
     
Pisarz 
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 
Wilczek


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
_________________
( [URL=http://www.przystanocalenie.org/]Przystan Ocalenie[/URL] | [URL=http://www.centaurus.org.pl/]Centaurus[/URL] | [URL=http://www.skrzydlatypies.pl/]Skrzydlaty Pies[/URL] | [URL=http://www.wwf.pl/]WWF[/URL] | [URL=https://www.karmimypsiaki.pl/nakarm-psiaka]Nakarm Psiaka[/URL] )
 
     
Minty 

omc dr fizyki


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 [b]Appname$[/b]
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 


Pomógł: 82 razy
Posty: 1731

37283 Prestiż
Wysłany: 27-02-2008, 18:46   

[quote="RomanX"]Wystarczy drobna przeróbka, żeby zabezpieczyć się przed zmianą nazwy:
+ Always
> The Big Box: Kill process [b]Appname$[/b]
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ć.)[/quote]
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 

omc dr fizyki


Pomogła: 259 razy
Posty: 3447

33795 Prestiż
Wysłany: 27-02-2008, 19:01   

[quote]A jak nie jest zgodna to co? To wtedy nie wyłącza programu?[/quote]
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 
2D Artist


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 [i]Always[/i], który jak nielicznym wiadomo obciąża w runtime aplikacji CPU.

Osobiście gustuję w takim kodzie:
[code]Run this event once
+ (negacja) This is the first instance
End the application[/code]
 
     
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