Bildschirmauflösung ändern und wieder auf default ?

Anfängerfragen zum Programmieren mit PureBasic.
xverbatim
Beiträge: 88
Registriert: 20.08.2005 20:19

Bildschirmauflösung ändern und wieder auf default ?

Beitrag 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)
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag 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.
my pb stuff..
Bild..jedenfalls war das mal so.
xverbatim
Beiträge: 88
Registriert: 20.08.2005 20:19

hmm ?

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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 :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag 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.
my pb stuff..
Bild..jedenfalls war das mal so.
xverbatim
Beiträge: 88
Registriert: 20.08.2005 20:19

von der idee gut , nur läuft nich ;-(

Beitrag 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)
 
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

versuch doch mal RunProgramm(..) mit der flag #PB_Program_Wait zu benutzen.

und zur weiteren abfrage
ergebnis=ProgramRunning(starte)
my pb stuff..
Bild..jedenfalls war das mal so.
xverbatim
Beiträge: 88
Registriert: 20.08.2005 20:19

geht nicht ;-(

Beitrag 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 .....
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

machs Dir nicht so schwer :D

Code: Alles auswählen

; Desktopeinstellungen lesen
; Desktopeinstellungen ändern

RunProgram("notepad", "", "", #PB_Program_Wait)

Debug "Notepad wurde beendet"
; Destopeinstellungen zurücksetzen
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
xverbatim
Beiträge: 88
Registriert: 20.08.2005 20:19

boaaaaahhhhhh

Beitrag 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.
Antworten