SetWindowLong (WinAPI) funktioniert nicht

07/07/2013 11:21 ExChill#1
Hallo,

Habe folgenden Code um Skyrim im Borderless Window Mode zu spielen (wird im Windowed Mode gestartet).

Code:
#include <WinAPI.au3>
#include <Constants.au3>
#include <WindowsConstants.au3>

HotKeySet ("{F7}", "skyrimfull")

Func skyrimfull ()

$skyrimhandle = WinGetHandle("Skyrim")

_WinAPI_SetWindowLong($skyrimhandle, $GWL_STYLE, BitOR($WS_BORDER, $WS_DLGFRAME))
_WinAPI_RedrawWindow($skyrimhandle)
WinSetState("Skyrim", "", @SW_SHOW)

WinMove("Skyrim", "", 0, 0, 1920, 1080)

EndFunc

While 1
Sleep (100)
Wend
Mein Problem ist, dass lediglich WinMove funktioniert, die Style-Änderungen jedoch nicht (Titelleiste und Rahmen bleiben unverändert).
Das SW_SHOW musste ich einbauen, da nach dem Anklicken vom Taskbar Icon nichts passiert ist.

Habe ich etwas übersehen / den Befehl falsch verwendet?
MfG ExChill
07/07/2013 13:03 SpieleHacksInfo#2
Hm habe das Script gerade mit Skyrim versucht kp was du mit borderless window mode meinst ( fenster modus ohne ränder?) jedenfalls nach dem ich #requireadmin und den hotkey wo anders hingelegt hatte wurde das fenster einfach nur größer
07/07/2013 15:59 KDeluxe#3
Ich gehe mal davon aus, dass du den Fensterrahmen entfernen möchtest, dafür verwendet man $WS_POPUP und nicht $WS_DLGFRAME.

Code:
$hWnd = WinGetHandle("[CLASS:Skyrim]")
_WinAPI_SetWindowLong($hWnd, $GWL_STYLE, BitOR($WS_VISIBLE, $WS_SYSMENU, $WS_POPUP))
WinMove($hWnd, "", 0, 0)
WinMove() ändert die Auflösung des Spiels nicht, nur die Größe des "möglichen Inhalts". Alles was über die eingestellte Auflösung des Spiels geht bleibt schwarz.
Und wenn ich mich richtig erinnere kann man doch selbst im Fenstermodus nicht mit der Maus einfach aus dem Fenster gehen. Man muss es immer noch minimieren, wenn man etwas in einem anderen Fenster machen möchte. Wofür also das ganze? Kann mich natürlich auch irren, ist schon etwas länger her, dass ich Skyrim gespielt habe.
07/07/2013 17:26 SpieleHacksInfo#4
Das einfachste ist immer noch das "raus-tabben" Alt + Tabulator am wirksamsten bei skyrim ^^
07/07/2013 19:05 ExChill#5
Quote:
Originally Posted by SpieleHacksInfo View Post
Hm habe das Script gerade mit Skyrim versucht kp was du mit borderless window mode meinst ( fenster modus ohne ränder?) jedenfalls nach dem ich #requireadmin und den hotkey wo anders hingelegt hatte wurde das fenster einfach nur größer
Ja, Fenstermodus ohne Rand, wie es bei vielen Spielen schon standardmäßig möglich ist.

Quote:
Originally Posted by KDeluxe View Post
Ich gehe mal davon aus, dass du den Fensterrahmen entfernen möchtest, dafür verwendet man $WS_POPUP und nicht $WS_DLGFRAME.

Code:
$hWnd = WinGetHandle("[CLASS:Skyrim]")
_WinAPI_SetWindowLong($hWnd, $GWL_STYLE, BitOR($WS_VISIBLE, $WS_SYSMENU, $WS_POPUP))
WinMove($hWnd, "", 0, 0)
Vielen Dank, VISIBLE und POPUP waren die Lösung.
Funktioniert jetzt mit folgendem Code.

Code:
_WinAPI_SetWindowLong($skyrimhandle, $GWL_STYLE, BitOR($WS_VISIBLE, $WS_POPUP))
WinMove("Skyrim", "", 0, 0, 1920, 1080)
Quote:
Originally Posted by KDeluxe View Post
WinMove() ändert die Auflösung des Spiels nicht, nur die Größe des "möglichen Inhalts". Alles was über die eingestellte Auflösung des Spiels geht bleibt schwarz.
Und wenn ich mich richtig erinnere kann man doch selbst im Fenstermodus nicht mit der Maus einfach aus dem Fenster gehen. Man muss es immer noch minimieren, wenn man etwas in einem anderen Fenster machen möchte. Wofür also das ganze? Kann mich natürlich auch irren, ist schon etwas länger her, dass ich Skyrim gespielt habe.
Man kann mit der Maus nicht raus, aber es sieht halt besser aus, wenn das Spiel trotz Fenstermodus auf dem kompletten Monitor ist.

Quote:
Originally Posted by SpieleHacksInfo View Post
Das einfachste ist immer noch das "raus-tabben" Alt + Tabulator am wirksamsten bei skyrim ^^
Darum will ich ja im Windowed Fullscreen spielen, weils im normalen Fullscreen zu lange dauert.