AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SetWindowPos Alternative

Ein Thema von Ondeth · begonnen am 12. Mai 2013 · letzter Beitrag vom 18. Mai 2013
Antwort Antwort
Ondeth

Registriert seit: 7. Mär 2013
22 Beiträge
 
Delphi XE3 Starter
 
#1

AW: SetWindowPos Alternative

  Alt 12. Mai 2013, 14:57
Hmm ...hast recht

Ich hatte eigentlich nicht vor das Fenster zu bedienen während das Programm geöffnet ist...

Hättest du noch eine Idee, wie sich das anstellen ließe ?
Max
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: SetWindowPos Alternative

  Alt 12. Mai 2013, 15:10
Wenn du das spiel gestartet hast deaktiviere es bevor du SetWindowPos verwendest
ansonsten wird sich das Window des Spiels wieder in den Vordergrund setzen.

Ich bin mir nicht sicher ob das überhaupt funktioniert denn bei DirektX ist das mit dem FensterHandle immer so eine sache
bin mir nicht sicher ob das im Vollbild noch gültig ist.

Prüfe also mal ob das Handle dann überhaupt noch existiert.

EnableWindow(SpielFensterHandle, False);
Beim beenden deines Programms wieder auf True setzen.

HWND_TOPMOST
Platziert das Fenster über allen nicht obersten Fenster.
Das Fenster behält seine oberste Stellung, auch wenn es deaktiviert ist.

gruss

Geändert von EWeiss (12. Mai 2013 um 15:21 Uhr)
  Mit Zitat antworten Zitat
Ondeth

Registriert seit: 7. Mär 2013
22 Beiträge
 
Delphi XE3 Starter
 
#3

AW: SetWindowPos Alternative

  Alt 12. Mai 2013, 15:49
Das Ergebnis meines "Ausprobierens" sieht folgendermaßen aus :

Code:
EnableWindow(game, False);
SetWindowPos(Handle,HWND_TOPMOST,Left,Top, Width,Height,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
Mit dem Code wird dann ja das Spielefenster deaktiviert und das Programmfenster nach oben gebracht... (hoffe ich jetzt einfach mal ^^)

Habe das ganze mal ausprobiert , aber es klappt nicht wirklich ... Das Programmfenster erscheint immer mal wieder für Bruchteile von Sekunden im Spielefenster und verschwindet dann wieder...

Habe ich was falsch gemacht ?
Max
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: SetWindowPos Alternative

  Alt 12. Mai 2013, 15:52
EnableWindow(game, False);

Was ist das game!
Hier solltest du dann das Handle des SpielFenster verwenden
Irgendwo in deinem Quelltext wirst du dieses doch ermitteln oder?
Über FindWindow und konsorten.

Irgendetwas dort hineinzuschreiben was keine gültigkeit hat wird dir nichts bringen.
Das Handle in EnableWindow und SetWindowPos müssen gültig sein.

SetWindowPos(Handle,HWND_TOPMOST,0, 0, 0, 0,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
Warum positionen des Fensters angeben wenn du dieses nur in der ZOrder verändern willst?
Zudem hast du flags addiert die den Resitz des Fensters grundsätzlich unterbinden..
SWP_NOMOVE + SWP_NOSIZE

gruss

Geändert von EWeiss (12. Mai 2013 um 16:16 Uhr)
  Mit Zitat antworten Zitat
Ondeth

Registriert seit: 7. Mär 2013
22 Beiträge
 
Delphi XE3 Starter
 
#5

AW: SetWindowPos Alternative

  Alt 12. Mai 2013, 16:10
Game bezeichnet bei mir das Handle des Spielefensters...
Ich hab es kurz vor dem "Codeschnipsel von eben" ermittelt.

Da werde ich doch noch einmal drüber schauen müssen
Max
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: SetWindowPos Alternative

  Alt 12. Mai 2013, 16:14
Game bezeichnet bei mir das Handle des Spielefensters...
Ich hab es kurz vor dem "Codeschnipsel von eben" ermittelt.

Da werde ich doch noch einmal drüber schauen müssen
oops.. OK
Wenn das Handle von SetWindowPos das deines Programms ist dann sollte das so stimmen
vorrausgesetzt das Game Handle ist gültig.

gruss
  Mit Zitat antworten Zitat
Ondeth

Registriert seit: 7. Mär 2013
22 Beiträge
 
Delphi XE3 Starter
 
#7

AW: SetWindowPos Alternative

  Alt 12. Mai 2013, 16:24
Naja , es läuft so "halb" ...

Sobald das Spielfenster deaktiviert ist und das Fenster meines Programmes HWND_TOPMOST ist , "blitzt" mein Programmfenster immer mal wieder im Spiel auf , um Sekundebruchteile später wieder zu verschwinden Es wird eben nie "richtig" angezeigt....

Wenn ich dann durch Druck der Tastenkombination das ganze wieder rückgängig mache (also Spiel aktivieren und NOTOPMOST), ist nur das Spielefenster im Vordergrund (wie es auch sein soll )

Ich glaub schon bald nicht mehr dran , dass das noch klappt
Max

Geändert von Ondeth (12. Mai 2013 um 16:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#8

AW: SetWindowPos Alternative

  Alt 12. Mai 2013, 23:35
Wenn du noch weiter suchen willst: Hier im Forum suchenoverlay ist ein gutes Stichwort.

Es scheint relativ gut möglich zu sein, ein Overlay für ein bestimmtes Spiel zu programmieren. Allgemeine Ansätze scheinen da schwieriger zu sein, vor allem weil verschieden Versionen von DirectX bzw. OpenGL gibt.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: SetWindowPos Alternative

  Alt 13. Mai 2013, 09:33
Hier ist mal ein DDraw Sample wie so etwas funktionieren könnte.
Beim beenden hab ich aber einen AV.. Und nein den find ich nicht

Ein paar kleine sachen könnte auch noch verbessert werden.
Wie immer verwendung auf eigene gefahr!

Vielleicht könnte man die Zeichnen Routine der Form noch beschleunigen.
Wäre was für die DirectX Spezialisten hier.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:07 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:01 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