| |
|
|
Sven Bader | Aus irgendeinem Grund funktionierte el Cambio el Bildschirmauflösung en media alten Spielen no mehr, sowohl con el Windows API como auch con el prospeed.dll no. Der herangehensweise es normalerweise, el Bildschirmeinstellungen por EnumDisplaySettings a holen y el Zona sólo el Werte para el Bildschirmauflösung anzupassen y alles otro unberührt que se.
Zum Debuggen Yo EnumDisplaySettings ausgeführt während una más Spiel el Auflösung korrekt geändert ha. So kam Yo darauf, dass mein Monitor el 60Hz Bildwiederholrate, welche en 1920x1200 Standard son en 640x480 no unterstützt.
Mein Code es auch no perfekt, él testet lediglich geläufige Bildwiederholraten y wählt en una Auflösungswechsel el höchste. "Exotische" Bildwiederholraten voluntad also no berücksichtigt.
Ein weiterer Fehler, el häufig begangen se, Es el Fullscreen Flag &CDS_FULLSCREEN a vergessen. Diese sagt de, dass el Auflösung no dauerhaft para el Desktop-Einsatz pero lediglich para el Dauer el Programmausführung geändert voluntad se. So se en una Programmabsturz oder unsauberen Beenden el ursprüngliche Auflösung des Sistema wiederhergestellt. Yo mi, dass auch una Effekt en fremde Ventana (verkleinern) y el Verschieben de Desktop Icons así verhindert se.
DEF EnumDisplaySettings(3) !"USER32","EnumDisplaySettingsA"
DEF ChangeDisplaySettings(2) !"USER32","ChangeDisplaySettingsA"
Declarar devmode#,devmodeoriginal#,fehl&
Dim devmode#,148
Dim devmodeoriginal#, 148
Proc ChangeRes2021
Parámetros x&, y&
declarar hz&[8]
hz&[1] = 360
hz&[2] = 240
hz&[3] = 144
hz&[4] = 120
hz&[5] = 75
hz&[6] = 60
hz&[7] = 59
Def &CDS_UPDATEREGISTRY $00000001
Def &CDS_TEST $00000002
Def &CDS_FULLSCREEN $00000004
Def &CDS_GLOBAL $00000008
Def &CDS_SET_PRIMARY $00000010
Def &CDS_RESET $40000000
Def &CDS_SETRECT $20000000
Def &CDS_NORESET $10000000
if ((x& = 0) | (y& = 0))
ChangeDisplaySettings(devmodeoriginal#,0)
más
EnumDisplaySettings(0, -1 ,devmode#)
long devmode#,104=%BitsPixel
long devmode#,108=x&
long devmode#,112=y&
fehl& = -2
whileloop 7
long devmode#,120 = hz&[&bucle]
fehl& = ChangeDisplaySettings(devmode#,&CDS_TEST)
if (fehl& = 0)
'messagebox Str$(hz&[&loop])+ "Hz is the highest working refresh rate","",0
fehl& = ChangeDisplaySettings(devmode#,&CDS_FULLSCREEN)
romper
endif
endwhile
endif
ENDPROC
cls
ChangeRes2021(1024,768)
settimer 10000'después de 10 Sekunden wiederherstellen
waitinput
killtimer
end
|
|
|
| |
|
|