Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi auf Vollbild testen (https://www.delphipraxis.net/66837-auf-vollbild-testen.html)

Evian 5. Apr 2006 00:56


auf Vollbild testen
 
Hallöchen,

kennt jemand eine Möglichkeit, wie ich herausfinden kann, ob eine Fremdanwendung(deren Handle ich habe) im Vollbildschirm-Modus läuft? Mir wäre auch geholfen, wenn ich prüfen könnte ob die Anwendung nicht im Vollbildschirmmodus läuft, was aber wohl auf das selbe herrauskommt.

Es geht dabei um ein Spiel, welches normalerweise im Vollbildschirmmodus gestartet wird, aber per "ALT+ENTER" auch in den Fenstermodus gebracht werden kann.

Für Ratschläge wäre ich sehr dankbar.

mfg

Evian

SirThornberry 5. Apr 2006 05:46

Re: auf Vollbild testen
 
Das Thema hatten wir schonmal. Es kommt dabei darauf an wie du vollbild definierst. Im Allgemeinen spricht man von Vollbild wenn ein Fenster genau so groß ist die Auflösung des Bildschirms. Du kannst also anhand des Fensterhandles die Größe des Fensters ermitteln und dann prüfen ob diese Größe gleich der Bildschirmgröße ist.

chaosben 5. Apr 2006 05:52

Re: auf Vollbild testen
 
Du könntest auch den WindowStyle des Fensters untersuchen, um das es geht. Imho hat ein Vollbild-Fenster der meisten Spiele keine Borders und ist maximiert. Das könntest du mit
Delphi-Quellcode:
GetWindowLong(Handle,GWL_STYLE)
herausfinden.
Oder du machst es dir einfacher und nutzt diesen Code:
Delphi-Quellcode:
TWindowStyles = record
    WS_BORDER,
    WS_CAPTION,
    WS_CHILD,
    WS_CHILDWINDOW,
    WS_CLIPCHILDREN,
    WS_CLIPSIBLINGS,
    WS_DISABLED,
    WS_DLGFRAME,
    WS_GROUP,
    WS_HSCROLL,
    WS_ICONIC,
    WS_MAXIMIZE,
    WS_MAXIMIZEBOX,
    WS_MINIMIZE,
    WS_MINIMIZEBOX,
    WS_OVERLAPPED,
    WS_OVERLAPPEDWINDOW,
    WS_POPUP,
    WS_POPUPWINDOW,
    WS_SIZEBOX,
    WS_SYSMENU,
    WS_TABSTOP,
    WS_THICKFRAME,
    WS_TILED,
    WS_TILEDWINDOW,
    WS_VISIBLE,
    WS_VSCROLL : Boolean;
  end;

procedure GetWindowStyles(const AHandle : HWND; var AWindowStyle : TWindowStyles);
var
  WStyle : Integer;
begin
  WStyle:=GetWindowLong(AHandle,GWL_STYLE);
  AWindowStyle.WS_BORDER:=(WStyle and WS_BORDER)=WS_BORDER;
  AWindowStyle.WS_CAPTION:=(WStyle and WS_CAPTION)=WS_CAPTION;
  AWindowStyle.WS_CHILD:=(WStyle and WS_CHILD)=WS_CHILD;
  AWindowStyle.WS_CHILDWINDOW:=(WStyle and WS_CHILDWINDOW)=WS_CHILDWINDOW;
  AWindowStyle.WS_CLIPCHILDREN:=(WStyle and WS_CLIPCHILDREN)=WS_CLIPCHILDREN;
  AWindowStyle.WS_CLIPSIBLINGS:=(WStyle and WS_CLIPSIBLINGS)=WS_CLIPSIBLINGS;
  AWindowStyle.WS_DISABLED:=(WStyle and WS_DISABLED)=WS_DISABLED;
  AWindowStyle.WS_DLGFRAME:=(WStyle and WS_DLGFRAME)=WS_DLGFRAME;
  AWindowStyle.WS_GROUP:=(WStyle and WS_GROUP)=WS_GROUP;
  AWindowStyle.WS_HSCROLL:=(WStyle and WS_HSCROLL)=WS_HSCROLL;
  AWindowStyle.WS_ICONIC:=(WStyle and WS_ICONIC)=WS_ICONIC;
  AWindowStyle.WS_MAXIMIZE:=(WStyle and WS_MAXIMIZE)=WS_MAXIMIZE;
  AWindowStyle.WS_MAXIMIZEBOX:=(WStyle and WS_MAXIMIZEBOX)=WS_MAXIMIZEBOX;
  AWindowStyle.WS_MINIMIZE:=(WStyle and WS_MINIMIZE)=WS_MINIMIZE;
  AWindowStyle.WS_MINIMIZEBOX:=(WStyle and WS_MINIMIZEBOX)=WS_MINIMIZEBOX;
  AWindowStyle.WS_OVERLAPPED:=(WStyle and WS_OVERLAPPED)=WS_OVERLAPPED;
  AWindowStyle.WS_OVERLAPPEDWINDOW:=(WStyle and WS_OVERLAPPEDWINDOW)=WS_OVERLAPPEDWINDOW;
  AWindowStyle.WS_POPUP:=(WStyle and WS_POPUP)=WS_POPUP;
  AWindowStyle.WS_POPUPWINDOW:=(WStyle and WS_POPUPWINDOW)=WS_POPUPWINDOW;
  AWindowStyle.WS_SIZEBOX:=(WStyle and WS_SIZEBOX)=WS_SIZEBOX;
  AWindowStyle.WS_SYSMENU:=(WStyle and WS_SYSMENU)=WS_SYSMENU;
  AWindowStyle.WS_TABSTOP:=(WStyle and WS_TABSTOP)=WS_TABSTOP;
  AWindowStyle.WS_THICKFRAME:=(WStyle and WS_THICKFRAME)=WS_THICKFRAME;
  AWindowStyle.WS_TILED:=(WStyle and WS_TILED)=WS_TILED;
  AWindowStyle.WS_TILEDWINDOW:=(WStyle and WS_TILEDWINDOW)=WS_TILEDWINDOW;
  AWindowStyle.WS_VISIBLE:=(WStyle and WS_VISIBLE)=WS_VISIBLE;
  AWindowStyle.WS_VSCROLL:=(WStyle and WS_VSCROLL)=WS_VSCROLL;
end;

procedure TForm2.btn_Button1Click(Sender: TObject);
var
  WS : TWindowStyles;
begin
  GetWindowStyles(Handle,WS);
  if (Ws.WS_MAXIMIZE) then // hier noch einiges anderes testen
    Caption:='FullScreen';
end;

Evian 5. Apr 2006 10:15

Re: auf Vollbild testen
 
Vielen Dank.. sieht interessant aus.. werd es mir mal ansehen!

toms 5. Apr 2006 10:22

Re: auf Vollbild testen
 
Maximiert heisst doch aber nicht, dass das Fenster im Vollbildschirmmodus ist.

chaosben 5. Apr 2006 11:17

Re: auf Vollbild testen
 
Zitat:

Zitat von toms
Maximiert heisst doch aber nicht, dass das Fenster im Vollbildschirmmodus ist.

Jetzt bin ich von den Socken.
Warum denn nicht? :?:

toms 5. Apr 2006 11:28

Re: auf Vollbild testen
 
Wenn das Fenster maximiert ist, sieht man doch noch die Taskleiste :gruebel:

chaosben 5. Apr 2006 11:34

Re: auf Vollbild testen
 
Hmmm ... da ist was dran ... daran hab ich nicht gedacht. Aber Evian kanns ja mal probieren.

toms 5. Apr 2006 11:36

Re: auf Vollbild testen
 
Zudem kann ich meine Formhöhe und Formbreite so setzen, dass es den ganzen Bildschirm ausfüllt.
Dann ist das Attribut WS_MAXIMIZE nicht gesetzt.

chaosben 5. Apr 2006 11:41

Re: auf Vollbild testen
 
[ironie]
Ok, ich sehe ein, das ich kompletten Blödsinn geschrieben habe. ;)

Aber nehmen wir mal an, das Spiel um das es geht, maximiert sich selbst im Vollbild-Modus. Dann wars das doch wert. oder? ;)
[/ironie]

Evian 5. Apr 2006 12:08

Re: auf Vollbild testen
 
Ich konnte es bis jetzt noch nicht testen, da der Spiele Server off ist.. aber eine Idee habe ich. Wenn das Programm im Fenstermodus läuft, dann hat es diesen Caption Balken oben drann.. im Vollbildmodus natürlich entsprechend nicht. Steht das nicht auch mit in den Style-Informationen?

Evian 5. Apr 2006 20:58

Re: auf Vollbild testen
 
-> Hat Jemand eine Ahnung, welche Eigenschaft des Styles der Balken am Oberen Ende des Fensters ist?!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz