Spiele in den Fenstermodus verbannen?

Hi, hätte da mal ne Frage... und zwar starten ja Spiele standartmäßig als Vollbildanwendung und manche von ihnen haben die Option sie im "Window-Mode" laufen zu lassen, manche jedoch auch nicht...

wer nicht weiß was gemeint ist, hier ein Screenshot:
crysiswn4.jpg


Meine Frage ist nun, ob man Programme dazu zwingen kann in diesem Fenstermodus zu laufen... ich hab schon danach gesucht, als Grundgedanke hatte ich einfach dass es bestimmt ne Funktion gibt die das Handle auf das Fenster erwartet und es dann in diesen Zustand bringt, aber ich weiß nicht welche...
Etwas in der Art von "PostMessage", welches aber nur sc_close, sc_minimize, sc_maximize und sc_restore bietet :)

Ich würde das gerne in Delphi machen, aber für Anregungen oder sogar Lösungen in anderen Sprachen wäre ich auch sehr dankbar (vorrausgesetzt es ist überhaupt möglich)!

mfg,
crack
 
da wohl jedes Spiel (wenn auch vielleicht mit Umwegen über x Frameworks) das Fenster mithilfe der WinAPI erstellt, wäre eine Möglichkeit, das Programm zu debuggen und da die WinAPI funktion zu finden, die das Fenster erstellt, und da das Fullscreenflag auf 0 setzen.
Eine andere Möglichkeit wäre es, einen Hook für eben diese Funktion aufzusetzen, der das Ganze dann macht.
Da ich mich aber weder mit WinAPI noch mit Windows-Hooks auskenne (ich hasse Windows;)), kann ich dir aber nichts genaueres sagen.
 
Soweit ich mich entsinne, gibt es eigentlich keinen speziellen "make it fullscreen" Flag für alles.
Um etwas im Fullscreen laufen zu lassen, könnte man
ChangeDisplaySettings aufrufen mit CDS_FULLSCREEN
http://msdn.microsoft.com/en-us/library/ms533260(VS.85).aspx
und dann CreateWindowEx benutzen mit Ex-Styleflag WS_EX_APPWINDOW und als Style WS-POPUP. Also einfach ein Fenster ohne Rand und Titel. Das habe ich zumindest schon paar mal bei "low level OpenGL/DirectX" Tutorials gesehen.
D.h man könnte die ChangeDisplaySettings API und CreateWindowEx in der user32.dll hooken und ChangeDisplaySettings "komplett" unschädlich machen sowie bei CreateWindowEx die Ex-Style Paramter ergänzen, damit das Fenster einen Titel hat. Ob man dann aber "on the fly" die Fentsergröße ändern kann, wäre fraglich.
 
Bei manchen Spielen gibt es die Möglichkeit sie über die Tastenkombination Alt+Enter in einen Fenstermodus zu versetzen. (Zumindest bei Windows) Ich hab aber keine Ahnung wie man das in Delphi umsetzen kann.

MfG Enterprize1
 
Bei Anno 1701 geht es eigentlich auch nicht. Es gibt aber die Datei Engine.ini da kann man verschiedene Einstellungen manuell machen. Z.B.:

<ScreenXSize>1280</> this sets the x size of the window
<ScreenYSize>800</> this sets the y size of the window
<ScreenFormat>1</> this sets the windowed mode

Vielleicht gibts bei deinen Spielen ja ähnliche Tricks.
 
Ich habs letztens bei WarCraftIII so gemacht das ich eine verknüpfung erstellt hab vom game und einfach "-window" hintergeschrieben hab und dann hats im fenstermodus gestartet.. müsste man mal ausprobieren obs auch bei anderen geht.
 
Ich hab's noch nicht ausprobiert, aber ich hab von leuten gehört, die ein Programm dafür haben, alles im Windowed mode laufen zu lassen. (War glaub ich, um MMO's zu cracken)
Ich glaub das hieß DXWnd-ms. Ist auch sehr klein, nur 150KB als rar.
Aber wie gesagt, versprechen kann ich nix. ^^

@Silex
Du hast einfach bloß einen Startparameter übergeben. Das ist nichts besonderes und wenn das nicht von den Machern bewusst als Funktion eingebaut ist, wird es nicht funktionieren.
 
Zurück
Oben