Skocz do zawartości

realizacje programu


Oddity

Recommended Posts

Jak zwykle rozwiązań jest kilka.
Sposób pierwszy: Skanujesz wszystkie uruchomione w systemie procesy i szukasz czy program jest już uruchomiony. O ile dobrze się orientuję, VC++ 6.0 nie posiada funkcji EnumProcess, więc trochę byś się musiał namęczyć jeśli nie posiadasz VC++ .net.

Sposób drugi (opisowy algorytm):
1. Uruchom program.
2. Wczytaj plik np. c:\program\uruchomienie.dat
3. Jeśli jego zawartość to "1", zamknij program.
4. Jeśli "0", ustaw tą wartość na "1" i uruchom się
5. Wykonaj swój kod
6. Zakończ działanie i ustaw uruchamianie.dat na "0"

Tak więc nigdy nie uruchomi się druga instancja programu tak długo, jak plik uruchomienie.dat ma wartość "1".

Link do komentarza
Udostępnij na innych stronach

Heh.. Znalazłem lepszy sposób od sprawdzania procesów. Wystarczy do pliku zapisywać co minute aktualną datę z godziną. Gdy data w pliku nie będzie przynajmniej o minutę mniejsza od tej w systemie program się nie uruchomi. Gdy komuś się zawiesi system będzie musiał uruchomić kompa od nowwa a to trwa (przynajmniej u mnie) ponad minute. Jeśli ktoś ma super szybkiego kompa to może ustawić 5 sekund. I to działa :D.

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...