Wykrywanie trybu pełnoekranowego.

0

Witam.
Przeszukałem net oraz to forum w nadzieji że znajde jakieś konkretne wskazówki na temat problemu z tematu niestety się zawiodłem :(
Początkowo myśłem że będzie się dało wykryć tryb pełno ekranowy za pomocą jakiejś systemowej prostej procedury ale niestety chyba czegoś takiego NIE MA.
Wpadłem jednak na pomysł, który wydaje się być sensowny a mianowicie na wykrywaniu aktywności DirectX i OpenGL ale ponieważ się na nich nieznam to prosze Was o pomoc.
Innym rowiązaniem mogło by być po prostu wykrywanie trybu overlay ale niemam pojęcia jak to zrobić,
w bazie Microsoftu znalazłem coś takiego: capGetStatus (i kilka podobnych) ale nie wiem jak tego użyć :(
Prosił bym o jak najprostrzy sposób (najlepiej bez instalowania żadnych dodatkowych komponentów).

Mam jeszcze jedno pytanie, chociaż rozwiązałem problem to nawet niewiem w jaki sposób to działa:

var pvParam:pbool;
begin
SystemParametersInfo(SPI_GETSCREENSAVEACTIVE,0,@pvParam,0);
if (pvParam <> pbool(True)) then CheckBox1.Checked:=True;

Działa jak należy ale jak zamiast pbool dam np. pointer to wyskakuje Access Violation,
jeżeli usune @ z pvParam to również wyskakuje ten sam błąd bez znaczenia czy jest to pointer czy pbool, wartość która zostaje zwrócona w przypadku przykładu powyżej jest odwrotna do tej która powinna być, z tąd pvParam <> pbool(True).
Gdy usune @ to wartość jest zwracana popranie (nie na odwrót) ale wyskakuje Access Violation.
O co w tym chodzi ? Czy ktoś jest w stanie mi to wytłumaczyć w przystępny sposób ?

0
sebeksd napisał(a)

Wpadłem jednak na pomysł, który wydaje się być sensowny a mianowicie na wykrywaniu aktywności DirectX i OpenGL ale ponieważ się na nich nieznam to prosze Was o pomoc.

Kiepski pomysł ponieważ aplikacje wykorzystujące DirectX i OpenGL równie dobrze mogą pracować w oknie. Zreszą tak naprawde tryb pełno ekranowy to nic innego jak okno (bez jakichkolwiek ramek, captionów itd. - sam client) o rozmiarze ekranu (okno powinno znajdować sie w punkcie 0,0). Jeśli okno przybiera rozmiar ekranu to zakrywa pasek zadań i menu start. Oczywiście jeśli aplikacja ma działać w mniejszej rozdzielczości niż aktualna to przed pokazaniem okna zmieniana jest rozdzielczość ekranu i dopiero wtedy pokazywane jest okno. Może pomysłem było by sprawdzenie czy aktualnie w systenie znajduje się okno o rozmiarze ekranu i może dodatkowo czy aktualny rozmiar ekranu jest taki sam jak przy standardowo ustawionej rozdzielczości w ustawieniach ekranu. Jeśli jest inny to istnieje duże prawdopodobieństwo że aktualnie jest uruchomoiona jakaś aplikacja "pełno ekranowa".

0

Prawde mówiąc nawet wykrycie aplikacji w oknie mogło by być ponieważ mnie interesują włśnie takie aplikacje które zajmują użytkownika i które zwykle odtwarzają jakieś dźwięki (najczęściej gry).
Coprawda aplikacja odpalona w oknie nie zajmuje całego okna ale zwykle przy takiej aplikacji (DX,OGL) uwaga urzytkownika skópia się na niej i oto właśnie mi chodzi by taką aplikacje wykryć, a nawet bym powiedział że nie sama aplikacja mnie interesuje jak samo to że jest coś włączone/aktywne co skupia uwage użytkownika (np gra). Jeżeli ktoś wie jak wykryć aplikacje które wykorzystują systemy dzwiękowe (gry programy do edycji muzyki) to może by mi wystarczyło zamiast wykrywania graficznego.

PS: W przypadku wykrywania dzwięków interesują mnie tylko takie programy które niemogą być zakłucane (gry programy do edycji muzyki) a np Winamp czy systemowo odtwarzane sample mogą być zakłucone.

1 użytkowników online, w tym zalogowanych: 0, gości: 1