myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und XAML » TopMost Applikation unter Windows 7 nicht sichtbar
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

TopMost Applikation unter Windows 7 nicht sichtbar

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
J. Fiddler
myCSharp.de-Mitglied

Dabei seit: 17.05.2019
Beiträge: 3
Entwicklungsumgebung: Visual Studio 2019


J. Fiddler ist offline

TopMost Applikation unter Windows 7 nicht sichtbar

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Community,

Ich kämpfe seit einigen Wochen mit einem Problem unter Windows7. Ich habe eine WPF-Applikation geschrieben, die als Overlay zu einem Spiel dient. Das Spiel ist dabei frameless, fullscreen und TopMost. Um meine Applikation nun in bestimmten Spielsituationen nach vorne zu bringen, ermittle ich das Mainwindow handle vom Spiel und setze meine Applikation mit SetWindowPos() darüber. Dies funktioniert ab Windows 8 und höher auch wunderbar. Leider nicht unter Windows7. .Net Frameworks ist 4.7.
Meine Applikation scheint dabei TopMost zu sein, ist aber leider nicht sichtbar. Ich vermute also ein Problem im Bereich Repainting.

Folgende Sachverhalte habe ich überprüft:
1. Die ZOrder ist korrekt. Der ZOrder Index meiner Applikation ist nach SetWindowPos eins höher als der Index des Spiels.
2. Ws_ex_topmost ist gesetzt.
3. Die Maus ist sichtbar wenn ich über bedienbare Widgets meiner Applikation hover. Die OnClick events werden in meiner Applikation ausgewertet, allerdings ist sie halt nicht sichtbar.
4. Ich habe über alle Children des Mainwindow vom Spiel iteriert und geschaut ob eines in der ZOrder weiter oben liegt. Das ist nicht der Fall.
5. Ich habe es noch zusätzlich in C++ mit der CWnd Klasse probiert, der Effekt ist leider identisch.
6. Ich habe unter Verwendung von Invalidate(), UpdateLayout() und Refresh() versucht meine Applikation neu zu zeichnen

Vielleicht hat jemand noch einen Hinweis oder weiß wo der Unterschied zwischen windows7 und >windows8 liegt

Vielen Dank und Gruß
17.05.2019 08:27 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.402
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ist das Spiel wirklich "FullScreen" (DirectX, OpenGL)? Dann kannst du auch nur mit diesen Technologien ein Overlay erzeugen, denn der Desktop (auf dem deine WPF-Applikation läuft), ist dann nicht sichtbar.

Nur im "windowed [borderless] mode" (d.h. es ist ein Fenster vom Desktop) kannst du eigene Applikationen darüber setzen.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am 17.05.2019 09:17.

17.05.2019 09:10 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
J. Fiddler
myCSharp.de-Mitglied

Dabei seit: 17.05.2019
Beiträge: 3
Entwicklungsumgebung: Visual Studio 2019

Themenstarter Thema begonnen von J. Fiddler

J. Fiddler ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke für deine Antwort. Ja, das beschriebene Verhalten betrifft nur den echten "Fullscreen". Wenn ich im Spiel die Option "Frameless window" wähle, funktioniert es wie von dir beschrieben einwandfrei.
Deine Erläuterung ist plausibel. Was ich allerdings nicht verstehe: warum funktioniert es unter win8 und win10 auch bei echtem, opengl, Fullscreen? Und warum ist die Applikation unter win7 bedienbar obwohl ich sie nicht sehe, liegt also scheinbar oben?
Ich werde mich auf jeden Fall jetzt erst mal mit der OpenGl/DirektX Thematik auseinander setzten. Da habe ich noch keine Ahnung von. Dank für den Hinweis.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von J. Fiddler am 17.05.2019 09:46.

17.05.2019 09:23 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.402
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich habe hier auch noch/nur Windows 7 und kenne es bisher auch nicht anders.
Evtl. wurde ab Windows 8 da etwas geändert.

Hast du denn im Spiel die gleiche Auflösung wie beim Desktop gesetzt? Und funktioniert das bei Win8 und Win10 auch bei unterschiedlicher Auflösung?

Es gibt Libraries, wie z.B.  Overlay.NET oder  DX9-Overlay-API (C++) - kannst da ja mal reinschauen.

PS: Du hast "win7 und win10" (statt "win8 und win10") geschrieben...
17.05.2019 09:44 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
J. Fiddler
myCSharp.de-Mitglied

Dabei seit: 17.05.2019
Beiträge: 3
Entwicklungsumgebung: Visual Studio 2019

Themenstarter Thema begonnen von J. Fiddler

J. Fiddler ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke für den Hinweis, den Fehler habe ich berichtigt. Die Auflösung scheint irrelevant zu sein. Ich habe es in verschiedenen Kombinationen versucht, das Verhalten ändert sich leider nicht. Default sind die Auflösungen identisch.
Die Libs sehen sehr vielversprechend aus. Vielen Dank dafür. Das wird heute Abend direkt ausprobiert.
17.05.2019 09:50 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 6 Monate.
Der letzte Beitrag ist älter als 6 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 08.12.2019 07:10