Directx 9 Spiel versteckt den cursor - ist es möglich diesen wieder sichtbar zu machen?

  • C#

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Takafusa.

    Directx 9 Spiel versteckt den cursor - ist es möglich diesen wieder sichtbar zu machen?

    Folgenes Szenario: Ich habe mir ein kleines Overlay mit WPF erstellt welches über ein Vollbild Spiel (GTA 4) angezeigt werden soll. Funktioniert soweit auch sehr gut.
    Doch leider versteckt das Spiel den Cursor, diesen brauche ich aber damit Nutzer Dinge im Overlay anklicken können.

    Ich habe bereits die API ShowCursor getestet - ohne Erfolg.

    Ich habe bereits gegoogelt, aber leider noch nichts passendens gefunden.
    Über Vorschläge würde ich mich freuen!

    Diese Methode benutze ich übrigens um ein WPF Window über eine Vollbild Anwendung anzeigen zu lassen:
    Spoiler anzeigen

    C#-Quellcode

    1. private static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
    2. private const UInt32 SWP_NOSIZE = 0x0001;
    3. private const UInt32 SWP_NOMOVE = 0x0002;
    4. private const UInt32 TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE;
    5. [DllImport("user32.dll")]
    6. [return: MarshalAs(UnmanagedType.Bool)]
    7. public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
    8. public WindowInteropHelper interopHelper;
    9. public GameOverlay()
    10. {
    11. InitializeComponent();
    12. interopHelper = new WindowInteropHelper(this);
    13. }
    14. private void Window_Loaded(object sender, RoutedEventArgs e)
    15. {
    16. SetWindowPos(interopHelper.Handle, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
    17. }

    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!
    Ich meine die Anwendung selbst muss ShowCursor callen. Da hast du glaub ich ohne in den Prozess einzugreifen keine Chance. Ich glaube du könntest eine DLL in C++ machen und diese injecten. Aber das wird zum Bann führen, wenn du das im Multiplayer machst evtl. auch im offline Modus. Sobald der Cursor aber über deinem Fenster ist, sollte er sichtar sein.

    Edit @ClonkAndre
    Ich hab eben mal in einem anderen Spiel mit DX9 getestet, da konnte ich in einer injizierten DLL den Cursor zeigen und verstecken. Da kannste auch gleich EndScene hooken und z.B. mit ImGui ein Overlay machen, ohne dich weitergehend mit dem Rendering in DX9 zu beschäftigen;
    Bilder
    • Unbenannt.jpg

      75,09 kB, 797×603, 17 mal angesehen
    Die Natur ist bekanntermaßen knallhart, sie sortiert aus was sich nicht bewährt hat.(Harald Lesch, 2021)

    Demnach müssten wir bald dran sein...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Takafusa“ ()