Seite 1 von 3
Bildschirmauflösung ändern und wieder auf default ?
Verfasst: 24.11.2006 11:11
von xverbatim
Hi,
ich habe mal eine Frage, ich würde gerne in Purebasic ein kleines Programm haben, daß wenn ich dieses starte, die Bildschirmauflösung auf 1024*768,32 umstellt und wenn ich das Programm NOCHMAL starte, er mir die alte Bildschirmauflösung wieder zurückschreibt.
Hat zufällig jemand ein BeispielCode dafür, wie man das am elegantesten machen könnte ?
Sollte man da die Daten erstmal auslesen und in eine Datei speichern oder gibt es da einen Trick ?
Die Auflösung läßt sich ja leicht mit unterem Code ändern, nur wie wieder zurückschreiben ? also die vorher eingestellte Bildschirmauflösung aktivieren ?
Gruß
T.
Code: Alles auswählen
dmScreenSettings.DEVMODE
dmScreenSettings\dmSize = SizeOf(DEVMODE)
dmScreenSettings\dmPelsWidth = 1024
dmScreenSettings\dmPelsHeight = 768
dmScreenSettings\dmBitsPerPel = 32
dmScreenSettings\dmFields = 262144 | 524288 | 1048576
dmScreenSettings\dmDisplayFrequency = 60
ChangeDisplaySettings_(@dmScreenSettings, 1)
Verfasst: 24.11.2006 11:23
von #NULL
vielleicht kannst du dir mit
Code: Alles auswählen
dmScreenSettingsOLD.DEVMODE
EnumDisplaySettings_(@dmScreenSettingsOLD)
(..oder so) vorher die aktuellen einstellungen besorgen, und später wieder mit ChangeDisplaySettings_(..) auf diese zurückstellen.
hmm ?
Verfasst: 24.11.2006 11:48
von xverbatim
Hi,
hmmm ?
also muß ich doch vorher eine Datei anlegen und wenn diese existiert, die Daten dann zurückschreiben...
geht das nicht einfacher....
das programm soll nur dafür da sein, den bildschirm umzustellen und dann wieder zurückzustellen, wenn ein anderes programm beendet wird...
und wenn ich die bildschirmauflösung während der ausführung des purebasic programm umstelle, muß dieses ja irgendwie ständig mitlaufen.
deshalb möchte ich es ja 1 * starten (merke irgendwie die bildschirmauflösung und stelle auflösung um) programm wieder beenden.
programm wieder starten, schreibe die alte auflösung zurück...
hat vielleicht noch jemand einen tipp ?
gruß+danke t.
Verfasst: 24.11.2006 11:55
von ts-soft
Ich hab sowas mal für ein altes Spiel gemacht. Einfach alte Auflösung merken,
Umschalten, RunProgam mit Wait ausführen und danach wieder zurückschalten.
Das PB-Programm, das im Hintergrund wartet stört doch nicht. Das ist sooo klein

Verfasst: 24.11.2006 11:55
von #NULL
wenn dein programm, das die einstellungen ändert, sowieso weiterläuft, bis die änderungen nicht mehr gebraucht werden, dann brauchst du nix in eine datei schreiben, sondern kannst es einfach im speicher lassen (also in deiner ..OLD variable, bzw deiner DEVMODE struktur). ich verstehe nich wo das problem is.
falls das programm aber nur zum ändern gestartet wird und sich dann wieder schließt, ist es eine möglichkeit, die werte auf platte zu speichern, und zum zurückstellen wieder einzulesen.
von der idee gut , nur läuft nich ;-(
Verfasst: 24.11.2006 12:20
von xverbatim
hi ts-soft,
die sache mit dem wait war gut, nur der debugger gibt mir zu verstehen, daß mein zuvor gestartetes programm nicht "open" ist und wenn ich es kompiliere, stürzt alles ab...
Code: Alles auswählen
dmScreenSettings.DEVMODE
dmScreenSettings\dmSize = SizeOf(DEVMODE)
dmScreenSettings\dmPelsWidth = 800
dmScreenSettings\dmPelsHeight = 600
dmScreenSettings\dmBitsPerPel = 32
dmScreenSettings\dmFields = 262144 | 524288 | 1048576
dmScreenSettings\dmDisplayFrequency = 60
ChangeDisplaySettings_(@dmScreenSettings, 1)
starte= RunProgram("c:\test.exe")
Ergebnis = WaitProgram(starte)
Repeat
Ergebnis = WaitProgram(starte)
Until ergebnis<>0
dmScreenSettings.DEVMODE
dmScreenSettings\dmSize = SizeOf(DEVMODE)
dmScreenSettings\dmPelsWidth = 1024
dmScreenSettings\dmPelsHeight = 768
dmScreenSettings\dmBitsPerPel = 32
dmScreenSettings\dmFields = 262144 | 524288 | 1048576
dmScreenSettings\dmDisplayFrequency = 60
ChangeDisplaySettings_(@dmScreenSettings, 1)
Verfasst: 24.11.2006 12:25
von #NULL
versuch doch mal RunProgramm(..) mit der flag #PB_Program_Wait zu benutzen.
und zur weiteren abfrage
ergebnis=ProgramRunning(starte)
geht nicht ;-(
Verfasst: 24.11.2006 12:37
von xverbatim
hi,
geht auch nicht
Code: Alles auswählen
starte= RunProgram("c:\test.exe",,,#PB_Program_Wait)
Repeat
ergebnis = ProgramRunning(starte)
Until ergebnis<>0
gibt mir ein syntax error in ergebnis aus .....
Verfasst: 24.11.2006 12:55
von ts-soft
machs Dir nicht so schwer
Code: Alles auswählen
; Desktopeinstellungen lesen
; Desktopeinstellungen ändern
RunProgram("notepad", "", "", #PB_Program_Wait)
Debug "Notepad wurde beendet"
; Destopeinstellungen zurücksetzen
boaaaaahhhhhh
Verfasst: 24.11.2006 12:59
von xverbatim
endlich DANKE, war ja letztlich super einfach
ja ja die parameter sind das a und o
nochmal danke an alle "HELFER"
gruß t.