Windows 10 - Windows-Taste deaktivieren, wenn Spiel (Fullscreen) aktiv

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Drahuverar.

    Windows 10 - Windows-Taste deaktivieren, wenn Spiel (Fullscreen) aktiv

    Hi,

    gibt es in Windows irgend eine Option, die die Windows-Taste deaktiviert, wenn man ein Programm/Spiel im Vollbild ausführt?

    Wenn nicht... Wie kann ich überwachen ob ein Prozess gerade im Vollbild ausgeführt wird? Dann würd ich das halt einfach permanent überwachen und den Registry-Wert drehen.

    Hat jemand da ne Idee?
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Hi,

    leider nicht. Wie ich manuell die Taste de-/aktiviere weiß ich.
    Ich möchte ja, dass sie in Abhängigkeit eines im Fullscreen laufenden Prozesses de-/aktiviert wird.
    Sie soll mich quasi nicht aus Spielen kicken.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Genau das möchte ich.
    Aktuell schalte ich sie immer manuell aus und wieder an...
    Aber das ist gelinde gesagt nervig.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    ---Edit 15:00
    Sooo :D
    Endlich zu Hause angekommen, konnte ich auch mal was machen:

    Um zu überprüfen, ob eine Anwendung im 'FullScreen' Modus läuft müssen wir herausfinden, welcheForm im Fokus bzw. im Vordergrund läuft. Hierzu nutzen wir die Win-API. Diese bietet uns folgende Funktion "GetForegroundWindow()". Nachdem wir also wissen, welches Fenster im Vordergrund ist,bzw. auf der obersten Ebene, müssen wir nur noch herausfinden wie groß die Form ist. mit der Win-API Funktion "GetWindowRect()" können wir uns die Werte herausziehen. Durch eine simple mathematische Berechnung (x,y,width - y, height-x) können wir durch .Contains vergleichen, ob beide Rechtecke (Rectangles) gleich sind. Wenn also die Form gleichgroß ist, wie unsere Auflösung (Screen.PrimaryScreen.Bounds), wissen wir, dass die Form in Fullscreen ist.Um nun loslegen zu können, müssen wir also zunächst die beiden Funktionen, welche in der user32.dll sind, aus dieser nehmen.

    InteropServices Klasse importieren:
    Import

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices

    Anschließend deklarieren wir in unserer Klasse die beiden Funktionen:
    Declare

    VB.NET-Quellcode

    1. Private Declare Function GetForegroundWindow Lib "user32.dll" () As IntPtr
    2. Private Declare Function GetWindowRect Lib "user32.dll" (hWnd As HandleRef, <[In], Out> ByRef rect As RECT) As Boolean

    Um die Werte des Rechtecks zu speichern nutzen wir eine Struktur
    Struktur

    VB.NET-Quellcode

    1. <StructLayout(LayoutKind.Sequential)>
    2. Private Structure RECT
    3. Public left As Integer
    4. Public top As Integer
    5. Public right As Integer
    6. Public bottom As Integer
    7. End Structure

    Nun schreiben wir uns eine kleine Funktion. Diese Funktion soll uns sagen, ob das Fenster im Vollbildmodus läuft.
    IsFullScreen

    VB.NET-Quellcode

    1. Public Shared Function IsFullScreen() As Boolean
    2. Dim rect As New RECT()
    3. GetWindowRect(New HandleRef(Nothing, GetForegroundWindow()), rect)
    4. Return New Rectangle(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top).Contains(Screen.PrimaryScreen.Bounds)
    5. End Function

    In einem Timer checken wir nun einfach, ob die Anwendung im VollBildmodus läuft.
    TimerBeispiel

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    2. If IsFullScreen() Then
    3. 'Aktive Form ist Fullscreen
    4. Else
    5. 'Aktive Form ist NICHT Fullscreen
    6. End If
    7. End Sub


    Habe mir die Funktionen bei pinvoke rausgesucht. Einfach auf englisch "windows foreground window vb.net" gesucht und anschließend bei pinvoke bin ich auf die Rechteckgeschichte gestoßen.
    Hoffe das hilft dir! (Mit dem VLC Player habe ich es getestet) - Mir hilft es bei meinem kleinen Heimprojekt weiter :thumbsup:

    P.S.: Momentan bezieht sich das nur auf den Hauptbildschirm, ich werde die Funktion erweitern und anschließend eine Solution anhängen :)
    Option Strict On!

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Drahuverar“ ()