Aplikacja zawsze na wierzchu

dział ogólny

Aplikacja zawsze na wierzchu

Nowy postprzez wazniak » piątek, 25 lipca 2008, 20:54

Witam

Mam pytanie, czy jest w ogole realne napisanie takiej aplikacji co ciagle byla by na wierzchu. Chodzi mi o to, ze gdy np wlanczam jakas gre to moj program nadal sie wyswietla na monitorze oraz wlonczona gra, bo jak mam wlonczony program i wlacze gre to widze tylko gre a program jest uruchomiony ale go nie widac

pozdro
Avatar użytkownika
wazniak
 
    NieznanyNieznana

Re: Aplikacja

Nowy postprzez riddyk » piątek, 25 lipca 2008, 21:45

Pewnie na to sposób byłby, ale ( jak zawsze jest ale). Jak gra jest napisana na dx albo ogl (opengl) to ten program musiałby się wyświetlać w okienku a co za tym idzie pasek start też powinien być widoczny, a gra na pewno nie będzie działać optymalnie. Jeżeli jest to gra okienkowa, to można pisać funkcję która będzie się "odświeżać", a uwaga komputera się skupi na programie i następny jaki guzik naciśniesz będzie się dział w programie. Oczywiście jest to moja opinia i mogę się mylić.

Lepszym rozwiązaniem było by użycie skrótów klawiszowych i wykorzystać np. wyświetlacz na lpt. albo samemu robić urządzenie np. po rs323 z wyświetlaczem i klawiaturą ( koszt nie wielki lecz bardzo edukacyjny ).
google to twój przyjaciel, pielęgnuj tą przyjaźń, rozmawiajcie, zadawaj mu pytania, na pewno Cię nie zawiedzie.
Avatar użytkownika
riddyk
Bladawiec
Bladawiec
 
Posty: 20
Dołączył(a): niedziela, 20 lipca 2008, 17:27
Lokalizacja: Gliwice
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Aplikacja

Nowy postprzez wazniak » sobota, 26 lipca 2008, 00:50

moglbys mi dokladnie powiedziec co i jak zrobic zeby takowa aplikacja bylo widoczna ale w bcb, a co do gry to raczej jest na opengl bo chodzi mi o Call of Duty 2. Co do tego ze bedzie widac pasek star nic nie szkodzi
Avatar użytkownika
wazniak
 
    NieznanyNieznana

Re: Aplikacja

Nowy postprzez Cyfrowy Baron » sobota, 26 lipca 2008, 10:13

Większość gier (prawie wszystkie) działają w DirectX lub OpenGL. Jak zapewne wiesz do przełączania się między okienkami a grą w takim trybie służy skrót klawiaturowy Alt+Tab i nie bez powodu. Nie wszystkie gry pozwalają na takie przełączanie, w niektórych przypadkach powoduje to zawieszenie się gry, lub nawet całego systemu.
Można spróbować przywoływać okno programu na pierwszy plan, ale jego utrzymanie nie będzie już takie proste, szczególnie w przypadku gier, gdyż one również mają mechanizm utrzymywania okna zawsze na wierzchu. Niemniej jednak należy posłużyć się kodem podanym ► patrz serwis: Cyfrowy Baron w dziele: porady | API | Przywoływanie okna na pierwszy plan.
Problem w tym, że jeżeli przywołasz okno na pierwszy plan, to zostanie ono oczywiście przywołane, ale się tam nie utrzyma, czyli musisz wprowadzić mechanizm przywołujący je cały czas, gdy zostanie przesunięte do tyłu, możesz więc wywoływać funkcję przywołującą w zdarzeniu OnTimer obiektu Timer, w ten sposób przy każdym tyknięciu zegara, program będzie sprawdzał czy okno znajduje się na pierwszym planie i będzie je przywoływał w zależności od potrzeb.
Jak łatwo się domyśleć, taka operacja wymaga czasu procesora, no i oczywiście przy zbyt częstym przywoływaniu okna będzie powodowała miganie, poza tym każde takie przywołanie okna powoduje odświeżenie pulpitu, więc będzie migał cały ekran.
Żeby utrzymać okno na pierwszym planie nie potrzeba jednak funkcji przywołującej, można ustawić właściwość FormStyle formularza głównego programu, na fsStayOnTop. Ta funkcja nakazuje oknu pozostawać zawsze na wierzchu i na ogół działa bez zastrzeżeń, ale jeżeli w systemie zostaną uruchomione co najmniej dwa programy z takimi ustawieniami, to oczywiście będą sobie wchodzić w paradę i wzajemnie się przesłaniać, a pierwszeństwo zawsze będzie miało to okno w które akurat ingeruje użytkownik. Poza tym jeżeli okno z takimi ustawieniami raz zostanie przesunięte na dalszy plan to mechanizm jego utrzymywania zawsze na wierzchu zostanie wyłączony i wtedy trzeba wywołać funkcję przywołującą okno na pierwszy plan, co i tak nie zawsze daje pożądany efekt.
Inna sprawa gry, tutaj przestawienie okna w tryb zawsze na wierzchu nic nie da, gdyż opcja ta dotyczy tylko aplikacji okienkowych i jest ignorowana przez aplikacje działające w trybie DirectX i OpenGL.



Reasumując, szansa na to, że będziesz mógł utrzymywać jednocześnie okno programu i grę na wierzchu jest równa 0, gdyż wymagałoby to,żeby okno programu było aktywne cały czas i gra,żeby była aktywna cały czas, co jest niemożliwe, gdyż tylko jedno okno na raz może być aktywne (aktywne nie znaczy zawsze na wierzchu). Okno aktywne to te w którym coś akurat robi użytkownik, program może wykonywać jakieś operacje w tle i jego okno nie musi być aktywne, co pozwala na utrzymywanie okna nieaktywnego zawsze na wierzchu, ale tylko w przypadku aplikacji okienkowych. W przypadku gry, jeżeli okno programu jest nieaktywne to system automatycznie przywołuje na pierwszy plan okno gry i tego mechanizmu nie można zablokować.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4728
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Aplikacja

Nowy postprzez Koziol » sobota, 26 lipca 2008, 11:54

Zastanawia mnie czy rozwiązaniem nie było by zrobienie czegos takiego jak xfire kombinacja klawiszy (w moim wypadku Scroll lock + x) przywołuje się "okno" nie jest to normalne okno typowe dla windowsa. Wydaje mi się, że (nie wiem tego na pewno) program dokleja w jakis sposób zez DX albo OpenGL swoje okno do okna gry gry teraz screenshot'a nie moge za bardzo wrzucic bo Xfire nie działa ale jak tylko bedzie możliwość to dorzuce
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
Podziękował : 8
Otrzymał podziękowań: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    NieznanyNieznana

Re: Aplikacja

Nowy postprzez wazniak » sobota, 26 lipca 2008, 11:58

Miales racje, nie da sie przynajmiej w przypadku gier zrobic, aby moja aplikacja byla wiswietlana caly czas, ale zastanawia mnie fakt, ze jak np gra w jakas gre to niektore programy tak potrafia, np xfire, jak gram w gre to jak moj znajomy do mnie napisze to przez chwile w prawym dolnym rogu wyswietli sie komunikat ze ktos pisze, mimo to ze gram w gre, czyli jednak moze jest taka mozliwosc ?
Avatar użytkownika
wazniak
 
    NieznanyNieznana

Re: Aplikacja

Nowy postprzez Koziol » sobota, 26 lipca 2008, 12:01

wiecej mozesz przeciez uzywac wbudowanego komunikatora podczas grania bez mozliwosci grania, jak mozesz wrzuc screen'a z jakiejs gry z okienkiem xfire (sprawdz jak je przywolac w trakcie grania), bo jakos nie moge sie zalogowac... :/ co za tym idzie zrobic screena
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
Podziękował : 8
Otrzymał podziękowań: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    NieznanyNieznana

Re: Aplikacja

Nowy postprzez Cyfrowy Baron » sobota, 26 lipca 2008, 12:16

Takie okienka mogą się utrzymać przez chwilę na wierzchu.
Korzystając z podanego przeze mnie wcześniej opisu, możesz też zrobić coś takiego, ale warunkiem jest to, że takie okienko nie może być edytowane przez użytkownika, nie może również przesłaniać dużego obszaru okna gry, stąd pojawianie się w rogu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4728
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Aplikacja

Nowy postprzez Koziol » sobota, 26 lipca 2008, 12:19

Jak tylko bedzie mozliwośc wrzuce screen'a.
W tym oknie można pisać, klikać wolna amerykanka, nawet ustawić wspolczynnik przezroczystości. A nie ma możliwości żeby jakoś przez dx czy opengl dorzucic wyswietlanie formularza ? A zapomniałem to o czym kolega wyrzej napisał to tylko małe powiadomienie, somo okno jest naprawde sporych rozmiarow i pojawia sie na środku.

EDIT:

Dałem radę coś wymyślić w załączniku screen z COD4+okienka XF
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
Podziękował : 8
Otrzymał podziękowań: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    NieznanyNieznana

Re: Aplikacja

Nowy postprzez Cyfrowy Baron » sobota, 26 lipca 2008, 12:28

Tak, można działać w tym oknie, a to prawdopodobnie dlatego, że program wykorzystuje mechanizm DirectX, a nie API, czyli działa w tym samym trybie co gra.
Należałoby zresztą poeksperymentować, być może wystarczy wywołać okno i przywołać je na pierwszy plan, najlepiej byłoby poszukać jakichś informacji o sposobie działania programu. Ja osobiście nigdy nie interesowałem się takim tematem.
Wiem że istnieje mechanizm polegający na tworzeniu warstw pulpitu, ale nie mam czasu się temu dokładniej przyjrzeć, chociaż przeprowadzałem testy, jednak nie z grami, lecz z umieszczaniem animacji mpg na drugiej warstwie, efekt był jednak taki, że po krótkim działaniu system mi się wieszał. Przestałem się zajmować tym problemem, gdyż nie znalazłem dla niego praktycznego zastosowania.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4728
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Aplikacja

Nowy postprzez wazniak » sobota, 26 lipca 2008, 12:42

ja rowniez zalanczam screena
http://img73.imageshack.us/img73/8770/beztytuuyq3.jpg
jak widac podczas gry moze sie wyswietlic obraz, a co do wielkosci programu mi chodzi tylko o to zeby byla to malutka czerwona kropka, ktora posluzy mi za celownik:P wiec tak mysle ze 5x5 pikseli to chyba nie duzo, dodam ze ta kropka ma byc na srodku ekranu....czy jest rrealne zeby tak zrobic ?
Avatar użytkownika
wazniak
 
    NieznanyNieznana

Re: Aplikacja

Nowy postprzez Cyfrowy Baron » sobota, 26 lipca 2008, 12:56

Sprawdź! Opis już ci podałem. Ustaw dla okna FormStyle = dsStayOnTop, i dodaj funkcję przywołującą okno na pierwszy plan. Czy można zrobić coś więcej? Na razie nie wiem...
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4728
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Aplikacja

Nowy postprzez wazniak » sobota, 26 lipca 2008, 13:12

Robilem juz tak to jak najpierw wlacze gre a potem program to w gre nie moge wejsc:/ pojawia sie czarny ekran ze byniby wchodzi a potem ukazuje sie pulpit, jak wlaczepierw program a potem gre to tak samo, gra jest wlaczona, ale jest na pasku, jak chce wejsc w nia to chwile czarny ekran i znow w pasku jest, wiec to co podales nie jest dobre
Avatar użytkownika
wazniak
 
    NieznanyNieznana

Re: Aplikacja

Nowy postprzez Koziol » sobota, 26 lipca 2008, 13:57

Cyfrowy Baron napisał(a):Tak, można działać w tym oknie, a to prawdopodobnie dlatego, że program wykorzystuje mechanizm DirectX, a nie API, czyli działa w tym samym trybie co gra.
Należałoby zresztą poeksperymentować, być może wystarczy wywołać okno i przywołać je na pierwszy plan, najlepiej byłoby poszukać jakichś informacji o sposobie działania programu. Ja osobiście nigdy nie interesowałem się takim tematem.
Wiem że istnieje mechanizm polegający na tworzeniu warstw pulpitu, ale nie mam czasu się temu dokładniej przyjrzeć, chociaż przeprowadzałem testy, jednak nie z grami, lecz z umieszczaniem animacji mpg na drugiej warstwie, efekt był jednak taki, że po krótkim działaniu system mi się wieszał. Przestałem się zajmować tym problemem, gdyż nie znalazłem dla niego praktycznego zastosowania.



A można wiedzieć gdzie szukałeś informacji na ów temat ? Albo właściwie pod jakimi słowami kluczowymi w google ;)
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
Podziękował : 8
Otrzymał podziękowań: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    NieznanyNieznana

Re: Aplikacja

Nowy postprzez Cyfrowy Baron » sobota, 26 lipca 2008, 16:19

Patrz czwarty post w tym temacie.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4728
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Następna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 6 gości

cron